«Перепрошить» китайский программатор USBasp может даже новичок. Для этого достаточно:
1. Перевести USBasp в режим, разрешающий программирование встроенного микроконтроллера! Обычно это делается установкой соответствующей перемычки или замыканием определенных контактов на плате!
Например, у программатора на фото – это контакты, отмеченные линией!
2. Подключить USBasp к любому программатору, который поддерживает программирование AVR контроллеров!
Выходы контактного разъема USBasp должны быть соединены в точности так же, как и при «прошивке» обычного микроконтроллера! То есть:
GROUND (GND) – общий провод GND GND
VCC (питание) должно быть не больше 5V! VCC VCC
SCK (serial clock) – последовательная синхронизация! Импульсы генерирует MASTER (ведущее устройство) SCK SCK
MOSI (MASTER OUT SLAVE IN) – это выход сигнала с MASTER (ведущего) устройства на SLAVE (ведомое)
MISO (MASTER IN SLAVE OUT) – вход для ведущего устройства, на который сигнал приходит с выхода ведомого!
RESET (сброс) – обратите внимание именно на этот контакт поступает сигнал для начала программирования! По умолчанию вывод RESET встроенного в USBasp контроллера не подключен – подключается он замыканием соответствующих выводов (установкой перемычки) см. фото!
Внимание, если ваш USBasp работает нормально, не спешите его сразу «перепрошивать» – сделайте вначале резервную копию «прошивки»!
Перед «прошивкой» желательно полностью стереть чип, не изменяя FUSE Bits!
Фьюз биты AVR микроконтроллера – это специальные ячейки памяти для конфигурации его работы. Помните, что неправильная установка даже одного фьюз бита, может привести к тому, что контроллер начнет работать совсем не так, как ожидалось, и возможно даже перестанет реагировать на команды с обычного ISP программатора!
Если «прошить» USBasp у вас не получается, скорее всего:
– неправильно подсоединены выводы – попробуйте поменять местами MOSI и MISO, предварительно убедившись, что всё соединения имеют надежный контакт!
– неправильно выбран тип микроконтроллера – выберите его вручную!
После загрузки в USBasp новой прошивки обязательно разомкните выводы (снимите перемычку), чтобы программатор смог работать в обычном режиме!
Стоит также заметить, что для «перепрошивки» USBasp не обязательно использовать программатор – его можно заменить даже дешевой платой Arduino, поддерживающей USB! Например, китайским аналогом Arduino Nano ! Разумеется, предварительно в плату Arduino необходимо загрузить скетч (программу) «Arduino ISP».
Недавно для обучения работе с Atmel AVR микроконтроллерами был куплен один из самых простых и недорогих программаторов USBASP USBISP AVR Programmer вот такого типа:
USBASP USBISP AVR Programmer
Данный программатор является одним из вариантов схемы проекта USBasp, вот оригинальный сайт:
USBasp
К слову, мне достался вариант ATMega8L, работающий в режиме разгона, на частоте 12МГц. По документации, должно быть не более 8МГц.
Не вдаваясь в подробности, решил обновить прошивку:
— взял прошивку usbasp.2011-05-28 с вышеуказанного сайта;
— замкнул на плате контакты J2;
— подключил 10pin разъем к другому программатору;
— залил прошивку;
— выставил fuse для atmega8: HFUSE=0xc9 LFUSE=0xef
Программатор определился в системе, но перестал видеть подключенные к нему контроллеры.
Процесс поиска решения проблемы описан здесь:
Форум
В итоге решение проблемы следующее:
— на всякий случай удалил два резистора R9 (270 Ом) и R10 (100 Ом), так как не совсем понимаю для чего необходимо подтягивать RXD и TXD сигналы к GND, да ещё при помощи резисторов столь малых номиналов;
— необходимо припаять перемычку с PC2(ADC2) на GND.
После вышеуказанных манипуляций программатор снова в строю.
Для счастливых обладателей вышеуказанного программатора — желаю учиться на чужих ошибках, для остальных — позволю себе напомнить главное правило, которое может помочь во многих житейских ситуациях: «работает — не трожь!» 🙂
Надеюсь кому-нибудь данная информация поможет.
P.S. Номиналы в схеме вышеуказанного программатора наиболее близки к указанным в следующей схеме:
USB программатор AVR — USBAsp
- Atmel,
- AVR,
- прошивка
- 15 августа 2012, 23:48
- GhostPVV
Комментарии ( 20 )
- Leon11t
- 16 августа 2012, 01:32
- ↓
- grand1987
- 16 августа 2012, 01:44
- ↑
- ↓
- Leon11t
- 16 августа 2012, 01:48
- ↑
- ↓
- GhostPVV
- 16 августа 2012, 08:23
- ↑
- ↓
для чего необходимо подтягивать RXD и TXD сигналы к GND
- grand1987
- 16 августа 2012, 01:41
- ↓
- GhostPVV
- 16 августа 2012, 08:19
- ↑
- ↓
— необходимо припаять перемычку с PC2(ADC2) на GND.
- angel5a
- 16 августа 2012, 09:57
- ↓
- GhostPVV
- 16 августа 2012, 23:17
- ↑
- ↓
После того как переведёте программируемый мк на внешний кварц и уберёте предделитель, лучше вернуть «fast mode», отключив эту перемычку.
- angel5a
- 17 августа 2012, 00:01
- ↑
- ↓
- Ximikator
- 17 августа 2012, 09:24
- ↑
- ↓
- angel5a
- 17 августа 2012, 10:02
- ↑
- ↓
- prostosergik
- 08 июля 2013, 22:11
- ↓
- prostosergik
- 08 июля 2013, 22:20
- ↑
- ↓
Вобщем, поигравшись с переделанным девайсом, обнаружилось, что медленные МК оно шьет только в медленном режиме, т.е. с перемычкой как у автора статьи, а быстрые контроллеры — только без перемычки. Тиню 13 с заводскими вьюзами (т.е. 1.2 мгц) в быстром режиме не видит, только в медленном. Но стоит только убрать предделитель на 8, сразу же перестает видеть в медленном режиме, зато замечательно шьет в быстром. Поэтому, обмозговав немного, переделал свои девайсы так:
Думаю, суть переделки ясна из картинки. Теперь появилась перемычка быстро-медленно.
- prostosergik
- 11 июля 2013, 02:31
- ↓
- wrewolf
- 01 февраля 2014, 22:03
- ↓
- ZabSeS
- 15 апреля 2014, 22:25
- ↓
У меня похожий программатор — usbasp v2 после перепрошивки начал при попытке прошить mega32 выдавать:
avrdude.exe: error: programm enable: target doesn’t answer. 1
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
Если я все правильно разобрался, то проблема заключается в следующем:
Мега, которая работает на 1МHz, требует, что бы ее прошивали на любой скорости ниже 1/4 от своей (то есть 250 kHz и ниже). Но Usbasp в «нормальном» режиме шьет с частотой 375 kHz, что есть много. Однако, для этого есть джампер JP3, про который в документации прямо и сказано
If the target clock is lower than 1.5 MHz, you need to set this jumper. Then SCK is scaled down from 375 kHz to about 8
kHz.
Если посмотреть устройство программатора, то видно, что этот джампер просто соединяет PC2 и GND.
Китайцы — злодеи. Не знаю, что соединяет этот джампер, но только не PC2 и GND.
Наклевываются 2 решения: 1 — подсоединить таки PC2 на GND, что сделано в посте. 2 — немного поменять прошивку.
В коде я поменял буквально 2 строчки — действия при if и else. Прошил — ура, работает. Теперь по умолчанию медленный режим. Побочный эффект — походу мы теряем режим 375 kHz. Прошивать main.hex
———————————————————
Пока разбирался успел написать китайцам, которые сделали этот программатор. Решение они не прислали, но в ответе была фраза
The board of us is 9F( low-value) D9(high-value) FF(Extension Digit) FF (Security Bit).
Решил показать, какими программаторами я пользуюсь и пользовался раньше.
Самым простым программатором является программатор для LPT-порта. Чтобы собрать такой программатор потребуется всего лишь штеккер LPT и 4 сопротивления.
Это был мой первый программатор. К нему я припаял колодку для прошивки ATmega8. Питание 5В брал с разъема molex компьютера.
Главным минусом этого программатора является то, что сейчас трудно найти LPT порт. Он канул в лету. Я использовал завалявшуюся у меня терминальную станцию на базе Pentium III, которая загружалась с флешки и жутко тормозила, но для первых экспериментов хватало.
Вскоре мой коллега тоже заразился программированием микроконтроллеров и даже соорудил танк с беспроводным управлением! Ну а для отладки танка собрал программатор USBasp.
И я стал тоже им пользоваться. Надо сказать, что пользоваться им гораздо приятнее, причем на любом компьютере и операционке.
Негоже на халяву пользоваться чужим и я заказал с ebay себе китайский USBasp за скромную цену в 170 рублей.
Рейтинг продавца хороший, но к сюрпризам с китайцами все равно будь готов. И без них не обошлось. Программатор работает, но avrdude выдает такое сообщение:
warning: cannot set sck period. please check for usbasp firmware update.
Решено обновить прошивку. Долго высматривал схему USBasp и плату полученного девайса. Все совпало. Значит можно спокойно обновляться. Для обновления нам понадобиться еще один USBasp, благо у нас есть самопальный! Соединяем оба программатора их родным проводом ISP10. Контакты перемычки для обновления находятся под чипом ATmega с обратной стороны. Их нужно замыкать, когда обновляешь прошивку программатора.
Китайцы не перестают удивлять. Попробовал считать прошивку, дабы попробовать определить версию, ну и сделать резервную копию — получил кашу. Это значит, что выставлен Lock bit, он защищает прошивку от считывания. Защитить прошивку открытого проекта — очень логичное решение. Но тем кто захочет обновить прошивку своего программатора, все равно попробуйте сделать резервную копию.
Вообщем, зашил последнюю прошивку с официального сайта, прошивал только FLASH. Теперь все работает хорошо, avrdude ничего лишнего не пишет.
Еще один сюрприз кроется в том, что на программаторе стоит ATmega8L, который по документации работает на частоте до 8 МГц, но на программаторе он работает в разогнанном режиме с внешним кварцем на 12МГц. На долго ли его хватит?
Вот еще добрый человек выложил видео, как обновить прошивку.
Так же хотел похвастаться макетной платой. Шла вместе с модулем питания и проводами для отладки схем. Приобрел за 270 рублей.
Успехов в программировании микроконтроллеров!