Речь в этой статье пойдет о самом простом программаторе для микроконтроллеров AVR. И тем не менее, это первый шаг, который необходимо сделать любому радиолюбителю, решившему освоить эти многофункциональные устройства. Даже если для программирования своих устройств Вы решите собрать более "продвинутый" программатор, данная конструкция может Вам понадобиться для первоначального программирования самого программатора.
Схема представленного здесь программатора позволяет "прошивать" широкий спектр микроконтроллеров фирмы ATMEL. В частности, программатор был испробован на следующих типах микроконтроллеров:
| Серия | Модель |
| ATtiny | ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny26, ATtiny2313 |
| Classic | AT90S1200, AT90S2313, AT90S2323, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535 |
| ATmega | ATmega48, ATmega8, ATmega88, ATmega8515, ATmega8535, ATmega16, ATmega162, ATmega163, ATmega168, ATmega169, ATmega32, ATmega323 |
Неоспоримым достоинством программатора "5 проводов" является его простота, что немаловажно для начинающих пользователей, которые пытаются создать свое первое устройство на микроконтроллере и любая неудача может похоронить желание дальше разбираться в этой теме. Кроме этого, можно выделить следующие достоинства:
Однако эта схема обладает рядом существенных недостатков, к которым относятся:
На рисунке 1 представлена схема этого чудо программатора.

Рисунок 1. Схема программатора "5 проводов"
Схема в особых комментариях не нуждается. Контакты 2, 3, 4, 9 порта LPT соединяются либо на плате (если используется кабель от принтера) или непосредственно в корпусе разъема (если используется шлейф + вилка DB-25M). Контакты 19-25 замыкать между собой не обязательно, так как они уже замкнуты на материнской плате вашего компьютера. Достаточно использовать любой из этих контактов.
Выводы микроконтроллера RESET, XTAL1, GND, VCC, SCK, MISO и MOSI необходимо уточнять в документации на прошиваемый Вами микроконтроллер. Я собирал этот программатор для "прошивки" микроконтроллеров ATmega8 и ATmega16. В моем случае указанные сигналы соответствуют следующим выводам микроконтроллеров:
| Название сигнала | Вывод микроконтроллера |
| RESET | 1 |
| XTAL1 | 9 |
| GND | 8, 22 |
| VCC | 7, 20 |
| SCK | 19 |
| MISO | 18 |
| MOSI | 17 |
| Название сигнала | Вывод микроконтроллера |
| RESET | 9 |
| XTAL1 | 13 |
| GND | 11, 31 |
| VCC | 10, 30 |
| SCK | 8 |
| MISO | 7 |
| MOSI | 6 |
Если в таблице одному названию сигнала соответствует несколько выводов микроконтроллера, то эти контакты необходимо соединить между собой на плате.
Согласно схеме для сборки устройства нам понадобятся следующие компоненты:
Особое внимание уделите длине кабеля. Если используется НЕ принтерный кабель (шлейф, например), его длину следует ограничить 10-15 сантиметрами. Я испытал эту проблему на собственном опыте. Сделав изначально кабель длинной 40 сантиметров мне так и не удалось нормально прошить микроконтроллер. Процесс программирования проходил успешно, но вот верификация не проходила. Сократив длину кабеля до 10 сантиметров процесс программирования и верификации в большинстве случаев стал проходить успешно. В случае использования принтерного кабеля увлекаться тоже не стоит. Береженого бог бережет.
Если сборка ведется на макетной плате, достаточно впаять панели под микросхемы и распаять шлейф. Если программатор изготавливается под несколько моделей микроконтроллеров и, соответственно, под несколько панелей, все соответствующие сигналы необходимо соединить между собой. То есть вывод 1 панели под микроконтроллер ATmega8 необходимо соединить с выводом 9 панели под микроконтроллер ATmega16 (смотри таблицы 2 и 3) и так далее. Результат моего "творчества" представлен на рисунке 2.

Рисунок 2. Вид готового программатора на макетной плате
Если же сборку планируется вести на текстолите, необходимо изготовить печатную плату.Я рекомендую использовать разводку (автор мне к сожалению не известен), представленную в файле 5provodov.rar (смотри приложения в конце страницы). Файл создан в программе P-CAD 2002. Пример собранного устройства с использованием указанной разводки представлена на рисунке 3.

Рисунок 3. Вид готового программатора на печатной плате
После сборки тщательно проверяем мультиметром конструкцию на возможные замыкания. Рекомендую не пропускать этот этап. Сэкономите массу времени и нервов в дальнейшем.
Все. На этом сборку программатора можно считать завершенной. Теперь можно вставить микроконтроллер-жертву в программатор и подключить программатор к LPT порту Вашего компьютера. Рекомендую подключать программатор к выключенному компьютеру. Напоследок осталось разобраться с программной частью.
А "прошивать" мы будем с помощью великолепной программы AVReAl. Перейдя по ссылке Вы сможете скачать последнюю версию этой программы а так же драйвер, необходимый для ее работы в операционных системах Windows NT, Windows 2000, Windows XP/2003. Предположим что драйвер успешно установлен, программа скачана и распакована, прошивка имеется, программатор подключен, а на часах третий час ночи. Остается только запустить программу с нужными параметрами и убедиться, что все работает как надо.
Прежде всего кратко опишем параметры, которые нам понадобятся:
Краткую справку по этим и другим параметрам, а так же список поддерживаемых микроконтроллеров можно получить, запустив в командной строке программу avreal с параметром -h:
avreal32.exe -h
Законченная командная строка для "заливки" прошивки в микроконтроллер (например, в ATmega16) будет выглядеть следующим образом:
avreal32.exe +mega16 -p1 -ap -o0 -n -2 -w имя_файла_прошивки.hex
Однако до прошивки микроконтроллера следует стереть содержимое флэш-памяти. Если этого не сделать, данные в контроллере скорее всего окажутся не корректными. Сделать это можно следующей командой:
avreal32.exe +mega16 -p1 -ap -o0 -n -2 -e
Верифицировать прошивку можно следующей командой:
avreal32.exe +mega16 -p1 -ap -o0 -n -2 -v имя_файла_прошивки.hex
Верификацией пренебрегать не стоит, нередко случаются сбои при прошивке. Если верификация прошла неуспешно, повторно залейте прошивку в контроллер.