Воскресенье, 24.09.2017, 15:01
Приветствую Вас Гость | RSS

Лаборатория Полюс

Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Каталог статей

Главная » Статьи » Электроника

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

COM программатор для микроконтроллеров 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 защищает микроконтроллер от подачи напряжения питания ошибочной полярности.


Рис.1 Схема COM программатора.

В устройстве можно использовать любые резисторы широкого применения мощностью 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 любого удобного типа. 


Рис.2 Рисунки печатной платы ( А - для плоского шлейфа  IDC10F, Б - для разъема РС-7ТВ)

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


Рис.3 Конструкция COM программатора.

Работа в операционной системе 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.


Рис.4 Окно программы AvrFuse

В утилите 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.


Литература.

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

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

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

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

 


Файлы печатных плат в формате Sprint Layout: dasa3-idc10.lay    dasa3-pc7.lay


Категория: Электроника | Добавил: and (16.01.2011)
Просмотров: 11067 | Комментарии: 7 | Рейтинг: 0.0/0
Всего комментариев: 4
3  
Автор, ты хоть понимаешь что ты нашкрябал? Где СОМ порт у ноутов?

4  
Ноутбуков с com портами мало, но их выпускают до сих пор. Можно поискать в Яндексе smile Берут заводы и автомастерские для работы с оборудованием по RS232 Переходники USB COM часто глючат, многие из них эмулируют COM не полностью.

2  
Спасибо! Ну автор за рубежом, а мы так, рационализируем :)

1  
После месяца упражнений с распайкой примерно 3х видов программаторов простых и кучи матов собрал этот. АЛЕЛУЯ! От себя: UNiprof кушает его как родного. пишется за 1-2 сек. По схеме: стабилитроны влегкую прут на 5,1 вольта - возможно попрут и 5,6. Запитал от компа диод поставил аналог- не важно какой на самом деле. Один из резисторов поставил на 5 ком - вобщем сборная солянка - а он работает. Я рад. Автору +100.

Имя *:
Email *:
Код *:
Корзина
Ваша корзина пуста
Поиск
Рейтинг@mail.ru

Copyright MyCorp © 2017
Бесплатный конструктор сайтов - uCoz