Используем 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 следующим образом:

https://alashed-media.s3.eu-north-1.amazonaws.com/wiki/digitrode/271-ispolzuem-arduino-mega-2560-v-kachestve-vnutrishemnogo-programmatora-isp/images/ispolzuem-arduino-mega-2560-v-kachestve-vnutrishemnogo-programmatora-isp-1.jpg

Итак, для начала нужно загрузить скетч 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, если есть такая в запасе

  • Если и это не помогло, то остается только спросить на форуме