Arduino UNO (прошивка загрузчика) STK 500

Всем привет.
Столкнулся с проблемой , не работала плата Arduino uno , нашел ее у себя без контроллера (возможно ушел на другие поделки), сама плата не оригинал. Но она мне понадобилась, поэтому было решено восстановить ее.
С драйверами проблем не было , на Windows 8.1 x64 , установил принудительно из папки ардуино E:\Электроника\soft\arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\drivers\

Screenshot - 26_07 006

Найдя в запасах у себя Atmega328P ,поставил ее в UNO, надеясь что в ней есть загрузчик . Но светодиод «L» на плате упорно молчал. Скетчи соответственно не заливались с ошибкой
avrdude: stk500_getsync(): not in sync: resp=0x00 (к ней мы еще вернемся).
Так как второй платы у меня не было решил попробовать прошить загрузчик программатором STK500 . После долгих поисков был найден оптимальный и быстрый вариант. Все прошил успешно, далее опишу как именно, вот только выбрал не тот бутлоадер (об этом позже).

IMAG0264

Помогла в прошивке программа SinaProg 2.1 (это удобная оболочка для averdude). Перед прошивкой необходимо выбрать программатор STK500 v2 и выбрать ком порт (скорость по умолчанию).
Если выбора ком порта нет -то делаем так:
Откроем файл port.txt в папке с SinaProg и приведем его к такому виду


Default.
[Default x
COM1 com1
COM2 com2
COM3 com3
COM4 com4
COM8 com8
COM5 com5
COM6 com6
COM7 com7
LPT1 lpt1
USB usb]

AVRISP mkII.
[USB usb]

USBasp.
[Default x]

USBtiny.
[Default x]

Далее выбираем бутлоадер, я сначала по невнимательности прошил ATmegaBOOT_168_atmega328.hex ,странно но в сети многие пишут о нем, но это не тот бутлоадер.
После прошивки этого бутлоадера начал моргать «L» светодиод , но сами скретчи по прежнему не заливались
avrdude: stk500_getsync(): not in sync: resp=0x00
Оказывается это был бутлоадер для другой платы (Duemilanove w atmega328) , потом для теста я залил скетч на этом бутлоадере выбрав эту плату.
Но продолжим , наш бутлоадер optiboot_atmega328.hex
Смело шьем его.

sina_prog1

Немного отступления, можно использовать и Atmega328 (без P) 🙂 . Для ее прошивки просто нужно поправить avrdude.conf изменив сигнатуру чипа atmega328p на atmega 328


#------------------------------------------------------------
# ATmega328P
#------------------------------------------------------------

part
id = "m328p";
desc = "ATMEGA328P";
has_debugwire = yes;
flash_instr = 0xB6, 0x01, 0x11;
eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
0x99, 0xF9, 0xBB, 0xAF;
stk500_devcode = 0x86;
# avr910_devcode = 0x;
signature = 0x1e 0x95 0x0F;
#signature = 0x1e 0x95 0x14;//328

Итак прошивку прошили, теперь посмотрим на фьюзы, нужные нам фьюзы можно найти в файле E:\Электроника\soft\arduino\arduino-1.0.5-r2-windows\arduino-1.0.5-r2\hardware\arduino\boards.txt

В нашем случае


uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
uno.bootloader.path=optiboot
uno.bootloader.file=optiboot_atmega328.hex
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F

Установим их и нажмем Write.
Вот и готово с загрузчиком. , я много времени потерял залив не тот бутлоадер и упорно выбирая плату UNO в программе arduino.

После этого все заработало.

Screenshot - 26_07 004

Надеюсь эта информация будет полезна.

IMAG0265

До новых встреч.

  • Sergey Novokhatsky

    С помощью вашей статьи, программатора USBISP v.3.02 и софта ProgISP 1.72 реанимировал свою китайскую UNO на MK ATmega328p. Вот установки фьюз-битов