Уже не однократно приходилось перепрошивать бутлодер на ардуинке. Причем я это делал как на UNO так и на Leonardo. В качестве ISP я использовал Arduino UNO.
Все коды уже есть в Arduino IDE. Самая сложная задача – правильно все соединить.
Схема
Подключать ардуинку, которую будете прошивать лучше после заливки скетча ArduinoISP на ардуинку, которая будет программатором.
Для программирования Arduino Uno, Duemilanove, или Diecimila нужно просто подключить выводы 11, 12, 13, 5V и GND одной платы к таким же выводам другой. Вывод 10 платы, которая будет выступать в роли программатора, подключаем к выводу RESET программируемой ардуинки.
Если вы программируете плату на базе 32u4, например Leonardo, то подключать нужно к ISP разъему для программирования по последовательному каналу. В этом контроллере программирование осуществляется через последовательный интерфейс SPI. Для подключения Ардуинки-программатора к Leonardo используются три линии интерфейса: SCK (тактовый сигнал), MOSI (вход данных) и MISO (выход данных), а также линия сброса – RESET. Программирование осуществляется путем посылки команд на вывод MOSI микроконтроллера. Результат выполнения команд чтения снимается с вывода MISO. Соответственно нужно соединить D13 программатора с SCK программируемой схемы, D12 – с MISO, D11 – с MOSI, а D10 – с RST.
Если вы используете Arduino UNO в качестве программатора, то подключите между RESET и GND конденсатор в 10 мкФ после заливки Arduino ISP скетча. Это рекомендация с официального сайта. Я не подключал конденсатор, все и так работает. Но есть шанс, что бутлодер зальется криво, пару раз такое поймал при прошивке Leonardo.
Инструкция
Для прошивки бутлодера нужно выполнить следующие шаги (взято с официального сайта):
- Открыть скетч ArduinoISP (в примерах).
- Для Arduino 1.0: нужно внести изменение в код ArduinoISP. Найти строку с функцией heartbeat() и заменить «delay(40);» на «delay(20);».
- В меню Tools выбрать Board and Serial Port соответствующий ардуинке, которая будет программатором .
- Загрузить скетч ArduinoISP.
- Подключить ардуинку, которую нужно прошить согласно схеме выше. (Для Arduino Uno нужно добавить конденсатор 10 мкФ между RESET и GND)
- Еще раз выбираем в меню Tools > Board плату, которую будем прошивать.
- Выбираем Arduino as ISP в меню Tools > Programmer.
- Жмем Burn Bootloader в меню.
Оригинал описания на официальном сайте.