ГлавнаяСтатьиЭлектроника → COM программатор для микроконтроллеров AVR

COM программатор для микроконтроллеров AVR

14 мая 2012 года
Ключевые слова: программатор , AVR

В статье описан простой программатор для прошивки микроконтроллеров фирмы Atmel через COM порт ПК или ноутбука. Устройство испытывалось в ОС Windows с программами Uniprof и Algorithm Builder, а также в ОС ALT Linux с программой Avrdude. Им были запрограммированы микроконтроллеры Atmega8, Attiny2313, Attiny15 и Attiny25.



Однажды возникла задача — собрать простой программатор для микроконтроллеров AVR, который мог бы работать с COM портами как стационарных компьютеров так и ноутбуков, и использовать программное обеспечение не только для ОС Windows но и Linux.

После просмотра ряда интернет форумов возникло решение использовать модификацию известного за рубежом простого последовательного программатора DASA. Базовый программатор DASA представляет собой простейшую схему на резисторах и стабилитронах [1]. Более поздние модификации DASA2 и DASA3 отличаются разводкой сигналов COM порта, а для более чёткой работы в них добавлен транзисторный инвертор сигнала RESET.

Оказалось, что в варианте DASA3 разводка сигналов COM порта практически совпадает с разводкой, применённой в схеме COM программатора Геннадия Громова [2]. Это позволяет с одним и тем же устройством использовать несколько программ прошивки микроконтроллеров, работающих как в ОС Windows, так и Linux.

Благодаря использованию стабилитронов программатор DASA не требователен к уровню сигналов на COM порте. Поэтому он может работать как со стационарными ПК (где величина сигналов на порте обычно составляет ±12В), так и с ноутбуками (где значение логических сигналов порядка ±5В).

Принципиальная схема собранного программатора «DASA3+R» показана на Рис.1. Резисторы R1-R4 ограничивают токи, протекающие по выводам COM порта, а стабилитроны VD1-VD3 преобразуют его напряжения к стандартному TTL уровню 5В. Диод VD4 защищает микроконтроллер от подачи напряжения питания ошибочной полярности.

В устройстве можно использовать любые резисторы широкого применения мощностью 0,125-0,25 Вт, например типов МЛТ,С2-33,С2-36,CF1/4 и т. д. Стабилитроны VD1-VD3 с напряжением стабилизации 4,7В BZX55C4V7 или КС147А, КС147В. Защитный диод КД522Б или 1N4148. Розетка для COM портов XS1 типа DB9F. Для подключения программируемого устройства служит 10-жильный плоский кабель длиной 40-50см с розеткой под обжим XS2 типа IDC10F. Разводка контактов соответствует стандартной цоколёвке STK200/300 фирмы Atmel. Вилки питания XP1, XP2 любого удобного типа.

Конструктивно программатор собран на печатной плате из односторонне фольгированного стеклотекстолита толщиной 1.5мм. Вид платы со стороны печатных дорожек показан на Рис.2.

Во избежание перелома проводов в плате предусмотрены отверстия, через которые пропускают провод перед его запайкой, а с правой стороны платы оставлен выступ для закрепления кабеля программирования изолентой. Программатор собран в корпусе из под телефонной розетки с одним разъёмом. Крышка корпуса опиливается надфилем, а COM разъём с платой крепится двумя винтами М3 длиной 4-6 мм. Для защиты микроконтроллера от ошибочного подключения кабеля программирования в отверстие 3-го контакта розетки XS2 надо аккуратно затолкнуть спичку. Если использовать стандартный кабель программирования не требуется, то можно применить любой удобный тип разъёма. Например, в собранном автором варианте программатора (рис.3) в качестве XS2 использована розетка типа РС-7ТВ.


Работа в операционной системе Windows.

Программатор полностью совместим с утилитой Михаила Николаева Uniprof [3]. Так же им можно читать и прошивать микроконтроллеры в среде программирования Algorithm Builder, но нельзя использовать режим внутрисхемной отладки с кристаллом.

Подробней остановимся на использовании программы Avrdude. Это мощная кросс платформенная консольная утилита, функционирующая как в ОС Windows так и в Linux. Но для её нормальной работы надо учесть, что в оригинальном программаторе DASA3 сигнал сброса RESET инверсный, а в описываемом программаторе (как и в программаторе Громова) он не инверсный. Поэтому нужно отредактировать файл конфигурации avrdude.conf. В нём надо найти следующие строки:

# unknown (dasa3 in uisp)

# reset=!dtr sck=rts mosi=txd miso=cts

programmer

id = ''dasa3'';

desc = ''serial port banging, reset=!dtr sck=rts mosi=txd miso=cts'';

type = serbb;

reset = ~4;

sck = 7;

mosi = 3;

miso = 8;

и убрать признак инверсии сигнала RESET — волнистую линию перед цифрой 4.

Если Вы не хотите работать с Avrdude в консольном режиме, то можно применить какую-либо графическую оболочку. Достаточно проста и удобна кросс платформенная утилита AvrFuse [4], разработанная японским радиолюбителем Maraca.

Утилита имеет наглядное меню с тремя вкладками (рис.4). В первой выбирают тип программатора (dasa3) и микроконтроллера, а так же программируемый сегмент памяти (FLASH или EEPROM). Во второй вкладке помещён список бит конфигурации (fuse бит). На третьей вкладке следует указать используемый порт (COM1 или COM2), а также каталог, где находится программа Avrdude.


В утилите AvrFuse имеется незначительная недоработка (баг). При записи fuse бит выдаётся ложное сообщение об ошибке, хотя проверочное чтение показывает, что они прошиваются верно.

При изменении fuse бит надо быть внимательным (чтобы не привести микроконтроллер в неработоспособное состояние) и учитывать, что в разных программах fuse биты задаются по разному. В утилите AvrFuse принята обратная нотация бит, т.е выбранный галочкой fuse бит равен 0 («запрограммирован»). В программах Algorithm Builder и Uniprof принята прямая нотация, где выбранный галочкой fuse бит равен 1 («не запрограммирован»).

Работа в операционной системе ALT Linux.

Программа Avrdude устанавливается из репозитория ALT Linux при помощи менеджера пакетов Synaptic. Если установка удалась, то после ввода в консоли команды avrdude появится справочная информация по работе с программой.
Затем перейдём в режим суперпользователя (root), введя команду su и пароль, и запустим Midnight Commander командой mc. Найдём каталог /etc/avrdude и отредактируем в нём файл avrdude.conf как описано выше.
После подсоединения программатора с COM порту и микроконтроллеру подаём на микроконтроллер напряжение питания 3,6-5В и проверяем работу программатора консольной командой такого вида:

avrdude -c dasa3 -P /dev/ttyS0 -p attiny2313

здесь ключ -с определяет тип программатора; ключ -P задаёт порт, /dev/ttyS0 это порт COM1 (для порта COM2 надо будет написать /dev/ttyS1); опция -p указывает тип подключённого микроконтроллера.

При правильном подключении и исправной схеме появится сообщение о готовности микроконтроллера к приёму команд:

[andrew@localhost ~]$ avrdude -c dasa3 -P /dev/ttyS1 -p attiny2313

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e910a

avrdude: safemode: Fuses OK

avrdude done. Thank you.

Чтобы установить графическую оболочку AvrFuse скачайте файл avrfuse1.0.2.tar.gz и распакуйте его в Ваш домашний каталог (у меня это каталог /home/andrew) в виде отдельной папки avrfuse1.0.2. Для запуска программы перейдите в эту папку и выполните скрипт start.sh. Для этого в консоли подают две команды:

cd avrfuse1.0.2
./start.sh

При настройке оболочки на вкладке Program выбирают тип программатора dasa3 и модель микроконтроллера, а на вкладке Setting указывают путь к программе Avrdude, а именно /usr/bin и номер последовательного порта /dev/ttyS0 для COM1 или /dev/ttyS1 для COM2.

Файлы печатных плат в формате Sprint-Layout находятся в прикрепленном Архиве

Программа AvrFuse для Windows     Не забываем проверять все exe файлы антивирусами.

Программа AvrFuse для Linux


Литература.


[1] http://forums.ladyada.net/viewtopic.php?f=24&t=8126

[2] http://algrom.net/russian.html (см. файл для инсталляции)

[3] http://avr.nikolaew.org/progr

[4] http://www11.ocn.ne.jp/~maracas/avrfuse.html

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

Ваше имя:

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

Формулы на латехе: $$f(x) = x^2-\sqrt{x}$$ превратится в $$f(x) = x^2-\sqrt{x}$$.
Для выделения используйте следующий код: [i]курсив[/i], [b]жирный[/b].
Цитату оформляйте так: [q = имя автора]цитата[/q] или [q]еще цитата[/q].
Ссылку начните с http://. Других команд или HTML-тегов здесь нет.

Сколько будет 39+8?