Используем Arduino Mega 2560 в качестве внутрисхемного программатора (ISP)
Что потребуется:
Arduino Mega
Плата с микроконтроллером ATmega, который нужно прошить
Конденсатор 100 нФ
USB-кабель, соединяющий Arduino Mega с компьютером
Среда разработки Arduino IDE
Несколько проводов для соединения Arduino Mega с самодельным Arduino
Основная трудность заключается в том, что у Arduino Mega другая распиновка в отличие от Arduino UNO, Duemilanove или Diecimila, поэтому руководства использования в качестве программатора перечисленных плат не подходят. Подробнее про распиновку Arduino Mega можно узнать здесь.
Вам нужно соединить Arduino Mega 2560 с платой с чипом Atmega 168/328 следующим образом:
Итак, для начала нужно загрузить скетч ArduinoISP. Откройте Arduino IDE, выберите Tools – Board – Arduino Mega 2560 (Сервис – Плата – Arduino Mega 2560). Выберите корректный COM-порт: Tools – Serial port – нужный порт (Сервис – Последовательный порт – нужный порт). Теперь перейдите в File – Examples – ArduinoISP (Файл – Примеры – ArduinoISP). Перед вами откроется скетч ArduinoISP. Нажмите кнопку Upload (Загрузить) и загрузите его в Arduino Mega 2560.
После того, как скетч будет полностью загружен, подключите конденсатор 100 нФ между линией питания +5 В и выводом RESET на Arduino Mega, чтобы отключить автосброс. В противном случае ничего не получится.
Далее выберите плату, которую хотите запрограммировать. Если у вас, например, микроконтроллер Atmega328 с осциллятором 16 МГц, то следует выбрать Arduino Duemilanove or Nano /w Armega 328.
Выберите Tools – Burn Bootloader – Arduino as ISP (Сервис – Программатор – Arduino as ISP). После загрузки кода вы сможете наслаждаться вашим самодельным Arduino.
Если у вас возникли ошибки:
Проверьте правильность выбора платы
Если у вас появилась ошибка типа avrdude: stk500_getsync(): not in sync: resp=0x00, то вы не поместили конденсатор 100 нФ между линией питания +5 В и выводом RESET на Arduino Mega
Если у вас другая ошибка, то ищите ответ в гугле
Если не нашли ответ в гугле, то воспользуйтесь тематическими форумами про Arduino
Если при программировании вашего Arduino появилась ошибка avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51, значит не в порядке автосброс (DTR). То есть Arduino IDE не может перезагрузить Arduino, и загрузка кода заканчивается провалом. Чтобы избежать этого, вы можете:
Нажать кнопку сброса на Arduino, кода появляется «Binary sketch size: xxxx bytes (of a xxxxxxx byte maximum)»
Если это не помогло, то вы можете подключить USB-кабель к компьютеру, но не к Arduino, и после того, как появится «binary sketch…», быстро воткнуть кабель в Arduino
Если и это не помогло, то вы можете держать нажатой кнопку сброса на Arduino, нажать Upload (Загрузить) в Arduino IDE и отпустить кнопку, когда появится «binary sketch size …»
Если и это не помогло, то вы можете нажать кнопку сброса после появления «binary sketch size … » и держать ее 2-10 секунд
Если и это не помогло, то вы можете заново загрузить загрузчик
Если и это не помогло, то вы можете взять другую плату Arduino, если есть такая в запасе
Если и это не помогло, то остается только спросить на форуме