понедельник, 24 октября 2011 г.

AVR, usb и программатор..

У меня в вялотекущем состоянии несколько идей и прожектов на микроконтроллерах; в последнее время отговоркой - почему все стоит на месте - было то, что за "большой" компьютер не попадаю, сижу на ноуте, а на нем (внезапно) нет LPT-разьема для программатора
Так что я сделал себе usb-программатор


Оказалось, дешево и сердито все придумано давным-давно - USBtinyISP тини2313 стоит $1.5, остальное копейки, ну в $3-4 максимум все обошлось; я выбрал первую версию схемы, развел платку с smd, вместо впайного usb разьема у меня разьем на шнурке - usb разьемы на ноуте по бокам и поэтому неудобно, если что-то из ноута торчит - руками зацепается
Вечером вытравил плату, днем распаял, прошил, потратил пол-дня на понять - почему не шьется, потом почему не определяется виндой - и в пайке было 3 косяка, и фьюзы прошивал неправильно :)
Заготовка платки:

Проутюженая платка:

Откисание (я просто бросаю платку в теплую воду на минут 5, пока бумага не "взрыхлится"):

Снимание бумаги (просто скатываю бумагу без фанатизма, под струйкой теплой воды):

Платка готовая к травлению:

Внезапно обнаружил, что хлорное железо в банке (от времени?) закаменело, а сверху покрыто слоем непонятной рыжей жидкости :( Кое-как наковырял немного, залил горячей водой, бросил травить:

Плата получилась на хорошо+ (а огрехи - типа вот слева-сверху пады разные - это принтер глючил)

Залудил, распаял

На схеме, которую я делал (v.1.0) есть 3 перемычки: JP5 замыкается для программирования самого программатора - разьем "настоящего" программатора включается в разьем на плате, а эта перемычка подключает линию RESET к RST программируемого контроллера - после программирования перемычку надо убрать, а то наш программатор сам себя попробует еще перепрограммировать :) Эта фича не работает на v.2 схемы, там буферы на выходе
Перемычка JP4 определяет, откуда питается программатор - от usb или от внешнего питания (т.е. от схемы, которую он программирует); перемычка JP3 определяет, откуда питается схема, которую программируем - от своего истояника питания или от usb; usb тут может отдать имхо ток всего 100 мА, поэтому надо бдить
Глюки были с прошивкой, точнее с фьюзами; в итого получилось самым правильным способом (который из-за лени не использовал сразу.. вот и получилось, что ленивый 2 раза делает) - в архиве с исходниками с сайта есть готовая прошивка (main.hex в папке spi), а в makefile есть команд-лайн для прошивки (в котором только надо было поменять тип программатора - у меня простой на LPT, он идентифицируется как STK200):
avrdude -c STK200 -pt2313 -U flash:w:main.hex
avrdude -c STK200 -pt2313 -U hfuse:w:0xdb:m -U lfuse:w:0xef:m
avrdude у меня уже был (он устанавливается скорее всего с WinAVR.. ну или я его установил туда когда-то), так что после прошивки вот таким образом все завелось с первого раза - при подключении программатора к usb зажегся светодиодик, винда спросила за драйверы

а при прошивке зажигается другой светодиодик, сигнализирующий, что что-то работает :)
Шьется не то, чтоб супер быстро, медленнее имхо, чем от lpt, но а) прошивки небольшие у меня обычно, б) я никуда не спешу :)
Зато у меня есть программатор и я начну ковырять очередной новый прожект.. ну если ничего больше не помешает :)

Комментариев нет:

Отправить комментарий