Программатор USBASP 2.0

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

Возникла необходимость программировать AVR-ки через USB. До сих пор программировал PonyProg-ом через СОМ-порт и все вроде устраивало. Но не нравилась привязанность в стационарному ПК потому, что СОМ-порт остался только в нем с задней стороны, да и периодически возникали проблемы с внутрисхемным программированием. Стал подбирать подходящие варианты и остановился на USBasp. Программатор очень популярен, изучен вдоль и поперек и главное предельно прост в изготовлении. Себестоимость изготовления такого программатора самостоятельно для меня выходила около 350-400р., готовый программатор «китайскозаводского» изготовления стоил 195р. Я как человек, понимающий в электронике, не привык слепо доверять Китайскому качеству, но цена вопроса, лень и жажда легкой наживы сделали свое дело.

DSCN5843

DSCN5848

DSCN5844

DSCN5845

Программатор куплен в версии 2.0 за 195р. с шлейфом, в популярном у «микроконтроллерщиков» Нижнегородском интернет магазине. Что мы видим? С одной стороны платы криво припаяна вилка разъема USB, с другой огромный (по SMD меркам) разъем. Качество пайки и позиционирования деталей типично Китайское – все вкривь и вкось, припоя самый минимум. Пятнами по плате растекается не отмытый флюс, торцы платы не обработаны. Синяя паяльная маска на удивление нанесена точно и МК тоже припаян точно, с первой попытки. Вместо зеленого и красного светодиодов мне впаяли два красных. На плате есть самовосстанавливающийся предохранитель и дополнительный стабилизатор напряжения 3.3В. Т.е. можно «джампером» выбрать напряжение питания программируемой микросхемы. Есть «джампер» для принудительного понижения тактового сигнала SCK и «джампер» для перевода микроконтроллера в режим самопрограммирования. Шлейф для подключения адаптеров микросхем длинной не более 15см. На разъем ISP-10, для подключения адаптеров, выведены линии TXD и RXD, что означает, что программатор может использоваться как согласующее устройство для терминала RS-232 даже если такового физически в ПК нет.

DSCN5846

DSCN5847

DSCN5852

Копия Копия FastStone BMP File

Копия FastStone BMP File

Первым делом прозвонил плату на предмет КЗ, что бы не спалить USB-контроллер, и вызвонил истинное назначение контактов разъема для адаптеров. Быстренько «наваял» плату адаптера на три распространенных типа корпусов в DipTrace-е, «заЛУТил» и бросил травиться. Сам пока пошел мучить программатор. Девайс сразу объявился в системе и потребовал драйвера – на, получай! В 32-битном WinХР SP3 все установилось без проблем, программатор определился в диспетчере устройств как и все другое оборудование. Это означало, что в МК уже залита прошивка управляющей программы и он готов к работе, не требуя дополнительного секса с программированием себя. Подоспела печатка адаптера, проверил работу программатора (чтение/запись, запись «фьюзов») с несколькими популярными МК, что были в наличии: восминоги ATtiny13 и ATtiny45, ATtiny2313 (20 ног), ATmega8 и даже вредную ATmega48PA (28 ног). Мега8 как-то не стабильно отзывалась, но после полного стирания при помощи Atmega Fusebit Doctor стала покладистей. После, отчистил всю плату от Китайского флюса, выровнял вилку разъема USB, заменил красный светодиод на зеленый и допаял недостающие «штыри» для «джамперов».

Короткий шлейф уничтожает все удобство внутрисхемного программирования, поэтому купил метр такого же шлейфа и переставил разъемы на него. Дополнительно на этот же шлейф добавил разъем ISP-6, т.к. существующим ISP-10 почти не пользуюсь. Таким образом получилось два шлейфа в одном, вполне в Китайской манере. Ниже есть картинки как все это правильно сплести.

FastStone BMP File

DSCN5866

DSCN5850

DSCN5851

ISP-10 в ISP-6Кстати о Fusebit Doctor и PonyProg-е – все МК запрограммированные ранее PonyProg-ом новым программатором считываться отказывались и помогала только «обработка доктором». При этом PonyProg-ом они нормально считывались. Программатор от PonyProg-а, кстати, для внутрисхемного программирования совершенно не подходит – часто лажает и не любит длинные провода. Одним и тем же программатором одну и ту же микросхему, тем же кабелем, в той же схеме может два раза прошить, а на третий выдать, что «тип МК неизвестен». Конский программатор, одним словом. Сейчас прошиваю напрямую из BASCOM-а, очень удобно, почти как Proteus в реальности. Только с фьюзами с непривычки пока совсем беда.

Скачать плату адаптера для USBasp 2.0

Скачать драйвер USBasp-win-driver-x86-x64-ia64-v1.2.5

На самом деле, налаживая устройства внутрисхемно, спалить программатор проще простого. Я в этот раз даже не сразу сообразил, что произошло. Программатор просто потух в тот момент, когда я переворачивал налаживаемую плату и выскочило сообщение о том, что USB-устройство неопознано. Ну, с кем не бывает, не в первый раз — заказал новый. Прислали тоже версию 2.0, но в другом исполнении (другого производителя). Спаяно все также криво, обычным паяльником, трясущимися ручонками. Да еще и грязный весь, флюс неотмыт, детали установлены криво. На 195р. такая поделка потянет, но не дороже.

DSCN6416

DSCN6413

DSCN6414

Ну да ладно, все поправил, отмыл, вставляю — все ОК, работает. Начинаю прошивать микроконтроллер, Bascom версии 2.0.7.8 его видит и прошивает нормально, но ругается на то, что не может программно управлять частотой тактирования — требует обновить прошивку: Can not set frequency. Please check for usbasp firmware update. В принципе не удивительно, я всегда больше удивляюсь тому, что Китайские поделки вообще включаются.

FastStone BMP File

Чтобы, в попытках обновить прошивку, не потерять еще один программатор решил восстановить прежний. Для этого купил новую «мегу» и впаял ее вместо сгоревшей. Соединил два программатора шлейфом из комплекта и подсоединил «ведущий» программатор к ПК. Важно не забыть на «ведущем» программаторе поставить перемычку Slow SCK. Дело в том, что «по умолчанию» в ATmega8A «ведомого» программатора зашиты «фьюзы» для работы на частоте 1МГц. Т.к. на такой частоте он не успеет за «ведущим», то будут ошибки при программировании, либо он вообще не определится.

DSCN6419

На «ведомом» программаторе нужно установить перемычку Selfprogramming и снять перемычку определяющую напряжение питания программируемой микросхемы.

Первым делом отправляем в микроконтроллер прошиваемого программатора конфигурацию «фьюз-битов» HFUSE=0xC9 LFUSE=0xEF. Для этого воспользуемся он-лайн калькулятором «фьюзов» и подберем необходимую комбинацию галочек для AVRDUDE 3.3 как на картинке:

Копия Копия Подключение

Теперь можно убрать перемычку Slow SCK и залить в микроконтроллер обновленную прошивку. Последнюю версию прошивки 2011-05-28 можно скачать отсюда или посетить сайт автора. Вот еще картинка, как правильно выставить перемычки на двух программаторах для простого обновления прошивки:

dscn6584

Недавно столкнулся с такой проблемой: при программировании «фьюзов» для работы от внешнего кварцевого резонатора микроконтроллер после прошивки сразу переставал определяться программатором, при этом в устройстве работал. Причина оказалась в том, что после «заливки» управляющей программы и прошивки «фьюзов» линия сброса (RESET) отключается и МК сразу начинает работать исполняя свежезаложенную в него программу. Но, т.к. теперь работать он должен от внешнего кварца, которого нет, он совсем перестает работать и отзываться на потуги программатора. Поэтому в схему адаптера сделанную мною ранее придется добавить кварц, примерно на 8МГц. Печатку не переделывал, пока обхожусь, просто подтыкая кварц при необходимости.

DSCN6468