Так как у многих уже давным давно нет ни COM ни LPT порта, то я решил выложить схему USB программатора для AVR. Это будет широко известный в узких кругах USBASP. Схема простая как три копейки, но MIT oder LPT порт все же потребуется – для того, чтобы прошить управляющий контроллер. Так что можешь сходить к другану. Программатор строится на контроллере ATMega48 oder ATMEGA8. Нужна именно 8 или 48, без всяких индексов L. Так как у нас требуется частота выше чем 8 Мгц.
СБОРКА
Так как я стараюсь не выкладывать непроверенные решения, то я повторил этот программатор. Чисто для себя, поприколу. Подобрал наиболее компактную схему и перевел ее в формат Sprint Layout. Изготовил печатную плату, стравил. Засверловал и напаял компоненты. Микросхему рекомендую ставить на панельку.
Прошивка программатора
Далее замыкаем перемычку J1 и J2 и подключаем к разъему стандартный последовательный программатор, да хоть тот же программатор Громова. Программатор должен иметь свое питание, иначе нужно подать его на схему.
И заливаем в проц прошивку. Для ATMEGA8 одна прошивка, для ATmega48 другая. Дальше нужно выставить биты конфигурации.
Для ATMega48:
Старший байт FUSE выставляется как 0хDD, младший 0xFF. На картинке я привел скриншот из UniProf с правильно расставленными битами конфигурации для контроллера ATMega48.
Если применяется контроллер ATmega8, то байты FUSE таковы:
Старший 0xC9, младший 0xEF
Настройка в работу
После прошивки нужно снять перемычку J1 и все, можно втыкать в комп. Сразу же должно обнаружиться USB устройство. Скармливаем ему дрова и у нас в системе появляется новый девайс – USBAsp. Если система ругается на драйвера, говорит, что это не драйвер, а фуфел какой то. Значит контроллер либо криво прошился, либо ты забыл снять перемычку J1.
Перемычка J3 используется для прошивки контроллеров у которых частота не превышает 1.5 МГц. Я ее поставил, без нее у меня мега 8 не хотела определяться. Потом подправил меге Fuse биты, чтобы она заработала на 8 Мгц, перемычку не снял, но работает. Слышал, что подправили и теперь перемычку можно не дергать туда сюда.
Красный светодиод показывает, что программатор подключен к USB и запитан. Зеленый, что идет обращение к прошиваемому контроллеру.
Прошивающий софт
Все, теперь можно подключать к программатору провод и тыкать им в прошиваемые контроллеры.
Единственная софтина которая поддерживает этот программатор это AVR-чувак, она же дудка, она же AVRDUDE. Мощнейший консольный программатор. Не стоит пугаться его консольности, во первых батники никто не отменял, а во вторых не него существует несколько оболочек.
ВНИМАНИЕ! В той GUI оболочке что находится в архиве ИНВЕРСНЫЕ FUSE!!! То есть если в даташите написано, что дефолтные SCKEL3..0 = 0100 то тут будет показан 1011!!! Короче, как в PoniProg. Чего эти утырки так вертят эти несчастные FUSE я понять не могу, хоть бы предупреждали, а то бы залочил кристалл нахрен.
Конфигурирование Fuse для Mega48
Fuses для Mega8
Fuses для Mega8 (в программе AVRDUDE)
Программатор должен появится в диспетчере устрйств
GUI Оболочка на AVRDUDE
Вот, пример командной строки для прошивки через USBAsp — Записываем main.hex во флеш ATmega8:
avrdude -c usbasp -p atmega8 -U flash:w:main.hex
В архив usbasp.rar я сложил все файлы необходимые для этого программатора:
- Прошивка для ATMega 48 и ATMega 8
- Драйвер для винды
- Fahren
- Печатная плата в формате Sprint Layout
- Фотки
- AVRDUDE
- GUI к AVRDUDE
UPD:
Для тех у кого вдруг пишет, что архив битый, я выложил то же самое в ZIP –USBASP.ZIP
Проверено – работает! Пользуйтесь 🙂
Страничка автора USBASP – там обновления прошивок, драйверов и варианты разводок плат.
Страничка разработчика GUI оболочки для AVRDude
Удобно, когда на одной плате с программатором установлен адаптер для программирования микроконтроллеров в DIP корпусе:
Скачать печатную плату для программатора USBAsp показного на этом фото можно по ссылке:
[hidepost]Адаптер DIP_AVR [/hidepost]
Комплект для радиолюбителя – Доктор AVR и программатор AVR – USBAsp:
WordPress database error: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (477) ORDER BY umeta_id ASC