26 сентября 2012 г.

Восстанавливаем bootloader у Arduino pro mini

Бывает так, что вы сломали bootloader у своей Arduino. Например, перезаписали его своей программой или просто попортили. При попытке залить в плату новую программу через USB-converter, аплоад зависает и вылезает вот такая ошибка:
avrdude: stk500_recv(): programmer is not responding
Не стоит выкидывать Arduino, сейчас мы разберемся, как это поправить.


Подключаем внешний программатор

Сердце Arduino pro mini - это Atmega328, и, естественно этот микроконтроллер поддерживает ICSP - внутрисхемное программирование по SPI-интерфейсу. Мы можем взять любой программатор для AVR, например, дешевый USBasp, и залить bootloader в память с его помощью.

Подключим линии VCC, GND, SCK, RST, MISO и MOSI нашего программатора к Arduino, как показано на рисунке:
Получается вот такое чудо техники:


Шаманим в Arduino IDE

А шаманить, если честно, особо не придется, потому что разработчики позаботились о пользователях, которые ломают себе загрузчики, и вынесли кнопку на очень видное место.

Для начала правильно выберем борду из списка:


Теперь выберем программатор:


И нажмем волшебную кнопку Burn Bootloader:


Появится сообщение "Burning bootloader to I/O board (this may take a minute...)", а потом "Done burning bootloader".

Если этого не произошло, проверьте, правильно ли вы подсоединили программатор к Arduino mini и определился ли он операционной системой. 

4 комментария:

  1. а будет гайд что делать в случае:

    avrdude: warning: cannot set sck period. please check for usbasp firmware update.

    Использую USBASP 2.0 нужно обновить его прошивку? как это сделать?

    ОтветитьУдалить
    Ответы
    1. Подскажу. Эта ошибка выводится обычно, когда проблема в чем-то другом. Например, если вы работаете под Линуксом, и у вас нет прав на работу с USBasp. Если это так, то как решить проблему написано здесь: http://greenoakst.blogspot.ru/2012/07/usbasp-ubuntu.html
      Обновлять ничего не надо.

      Удалить
    2. avrdude.exe: Device signature = 0x1fde87
      avrdude.exe: Expected signature for ATMEGA168P is 1E 94 0B
      Double check chip, or use -F to override this check.

      Не понимаю в чём может быть проблема....

      Удалить
    3. Не совпадает название кристалла в Arduino IDE и у вас - ATmega328 и ATmega168.

      Удалить