Не могу добиться стабильной прошивки указанного микроконтроллера (AVR ISP MkII), используя программатор AVR ISP MkII. Работаю в Arduino IDE 1.6.5, но в данном случае нужно программировать "голую" Атмегу. Выбрал в списке плат "Arduino NG or older", потом ATmega8. Иногда прошивается быстро и без ошибок, а часто программатор долго думает, а потом вываливается ошибка верификации и ругань: avrdude: stk500v2_paged_write: write command failed avrdude: verification error, first mismatch at byte 0x0000 0x00 != 0x41 avrdude: verification error; content mismatch P.S. Посмотрел расширеный лог avrdude: Начало опущу... avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9307 avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude: erasing chip avrdude: reading input file "C:\DOCUME~1\Alexium\LOCALS~1\Temp\build6494248862496841421.tmp/Radio_LEDs_RF.cpp.hex" avrdude: writing flash (2684 bytes): Writing | avrdude: stk500v2_command(): warning: Command timed out avrdude: stk500v2_paged_write: write command failed ################################################## | 100% 8.91s avrdude: 2684 bytes of flash written avrdude: verifying flash memory against C:\DOCUME~1\Alexium\LOCALS~1\Temp\build6494248862496841421.tmp/Radio_LEDs_RF.cpp.hex: avrdude: load data flash data from input file C:\DOCUME~1\Alexium\LOCALS~1\Temp\build6494248862496841421.tmp/Radio_LEDs_RF.cpp.hex: avrdude: input file C:\DOCUME~1\Alexium\LOCALS~1\Temp\build6494248862496841421.tmp/Radio_LEDs_RF.cpp.hex contains 2684 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 0.98s avrdude: verifying ... avrdude: verification error, first mismatch at byte 0x0000 0x00 != 0x41 avrdude: verification error; content mismatch avrdude done. Thank you.
Частота выставлена в 1МГц, фьюзы вроде бы на дефолте, если судить по данным Атмел Студио (уже и ее поставил). Я подстроил в ини файлах Ардуино перменную для частоты, которая используется всякими функциями, но это не должно влиять на проблему. В тоже время 168-я Атмега тоже с дефолтными фьюзами работает исправно (шьется без ошибок). 8-ка тоже работает исправно, если получается запрограммировать. П.с. А есть какая-то регулировка частоты программирования? В Студио есть, видел. А тут? Видел только скорость и ее выставил для пробы в 9600, но не помогло.
Частично решил проблему установив фьюзы на 8МГц. Пока какой-то причине мне не удалось заставить работать avrdude с 1МГц. Может подскажете, как это сделать? Опцию -B пробовал задавать и 15, и 10, и 4, и 8. На 3 вообще узнавать перестало чип. Или это совпадение?.. Хотелось бы именно на 1МГц наладить стабильную прошивку. 8 там не нужно.
Хоть опыт работы с контроллерами и небольшой, но думаю стоит поделиться: Последнее время работал с AT90USB162 (контроллер другой, но, как мне кажется, в плане процесса прошивки AVR-ки мало отличаются друг от друга). Первую плату развел с грубыми ошибками в цепи кварца и нагрузочных конденсаторов к нему. В результате контроллер от внутреннего генератора работал, а от кварца ни как. В то же время через программатор контроллер шился без проблем при любых настройках фьюзов, отвечающих за источник тактовых импульсов. Так же шилось при фьюзах, указывающих работать от кварца, но с выпаянным кварцем из платы (да-да, по неопытности издевался как мог ). Т.е. можно сделать вывод, что тактовая частота с фьюзами, не влияют на процесс программирования контроллера. Проблема скорее всего либо в программаторе, либо в контроллере. PS: в качестве программатора AVRISP выступала Arduino UNO с соответствующей прошивкой. PPS: в процессе экспериментов ни один контроллер не пострадал -- все живы здоровы .
Учитывая, что такая ситуация у меня со всеми несколькими восьмерками, можно было бы обвинить программатор, но ему почему-то очень нравится 8МГц 168-й Атмеги, а также 16МГц (или сколько там) самой Уно и ее 328-й. Проблемы с прошивкой на трех 8-ках исчезли полностью после установки их частот на 8МГц. Остальные ждут своего часа.
Действительно фьюзы влияют на процесс прошивки. В документации нашел, что частота SCK определяется как: Получаются следующие варианты: понижать частоту передачи данных через SPI (из программатора в контроллер), если есть такая поддержка в программаторе (частота должна быть в четыре раза ниже, чем частота программируемого контроллера) -- Вы использовали опцию '-B' и говорите, что не работает -- может с программатором что-то не то (программатор заводской или сами делали?); повышать частоту программируемого контроллера, что Вы, собственно, и делаете. PS: похоже мне просто повезло....
Сегодня вернул чипы на 1МГц и они по прежнему программируются без ошибок. Даже не знаю... Надо с оставшимися попробовать.
Знаете, что? Сегодня подопытные снова стали отказываться программироваться с той же ошибкой. Короче, поставил Arduino IDE 1.0.5 вместо 1.6.5 и... ошибок стало намного меньше. Намного! Фактически их было наверное из 10 попыток 2-3. Что гораздо лучше. Заодно эта версия IDE стала нормально прошивать фьюзы, а то последняя совсем не могла (хотя "дудка" сама могла).