Чем дальше, тем меньше остаётся на корпусах компьютеров проверенных, изученных вдоль и поперёк портовLPT,COM. Хотя ещё можно приобрести компьютер (пусть и б/у) с такими портами для использования его в качестве "рабочей лошадки", всё же приходится задумываться о грядущей замене (модернизации) аппаратуры навешанной на старые порты. В частности, что-то нужно делать с инструментами для программирования микроконтроллеров. И лучшие люди Отечества (в данном случае,Petka) не дремлют. В результате, появился работоспособный программатор для внутрисхемного программирования микроконтроллеровAVR, совместимый сSTK500v2.
Достоинства данной конструкции:
- аппаратный преобразователь USB - COM (не надо извращаться с программной реализацией USB);
- новый протокол от Atmel. Теперь не требуется перешивать программатор при появлении новых чипов;
- решена проблема "курицы и яйца" (как / чем запрограммировать микроконтроллер программатора);
- возможность изменения режимов работы программатора, при помощи любой терминальной программы, например HyperTerminal;
- возможность тактирования программируемого микроконтроллера сигналом 1 МГц;
- готовый пакет документации, со всеми необходимыми исходниками (схемы, прошивки, чертежи печатных плат, исходные тексты программы микроконтроллера).
К недостаткам проекта в целом, можно отнести некоторую "размытость" полезной информации по 50-ти страницам форума, что приводит к определённым трудностям при повторении конструкции.
Нужно отметить, что если под рукой ничего, кромеUSBпорта нет, то выход только один - собирать программатор AvrUsb500 by Petka "как есть", проще уже не будет.
Однако в ряде частных случаев конструкцию можно упростить:
- уже имеются проверенные инструментальные средства для программирования микроконтроллеров. В этом случае гораздо проще прошить МК программатора отдельно. Если размеры будущего программатора большой роли не играют и допустимо использовать МК в корпусе DIP, то этот вариант однозначно предпочтительнее;
- в наличии есть готовый преобразователь USB - RS232 промышленного изготовления с драйверами и т.д. Было бы разумно использовать его в качестве "составляющей" программатора. Тогда, правда, придётся делать внешнее питание программатора (не от порта USB). В случае автора статьи это не было препятствием, поскольку питание всех имеющихся внутрисхемных программаторов выполнено от программируемых устройств.
В результате схема программатора AvrUsb500 by Petka приведена к следующему виду:
Вся документация по программатору находится в архиве "Stk500" (). Содержимое архива:
Atmega8_14745600.hex |
прошивка для микроконтроллера программатора (ATmega8), при частоте кварцевого резонатора 14,7456 МГц (из архива AvrUSB500_by_Petka_HEX_SRC_v6_uni)
|
Терминал STK500.ht |
файл программы HyperTerminal необходимый для первоначальных настроек программатора
|
1. Схема.pdf
|
принципиальная схема программатора
|
2. Нижняя сторона ПП (ЛУТ).pdf |
8 копий рисунка печатной платы для лазерно-утюжной технологии изготовления ПП
|
3. Сборочный чертёж.pdf |
расположение компонентов на печатной плате + рисунок печатной платы со стороны деталей (вид "сквозь плату") + рисунок со стороны дорожек
|
4. Фьюзы.pdf |
файл с указанием фьюзов, которые необходимо выставить при прошивке микроконтроллера программатора
|
5. Исходник (Схема).pdf |
исходная схема программатора (проект AvrUsb500 by Petka)
|
6. Исходник (Перечень).pdf |
перечень элементов (проект AvrUsb500 by Petka)
|
Позиционные обозначения элементов на схемах совпадают. Вновь введённые элементы обозначены символом(')у названия элемента.
Детали и конструкция
По условиям задачи на плате программатора должны быть установлены два разъемаDB-9 и микроконтроллерATmega8 в корпусеDIP. Отсюда ясно, что особенно бороться за миниатюризацию бессмысленно. Поэтому изSMDкомпонентов - только конденсаторыC8,C9 типоразмера 0805.
Программатор собран на пластине одностороннего фольгированного стеклотекстолита. Размеры пластины указаны на сборочном чертеже. На плате имеются две перемычки: одна находится под разъёмомSPI(на рисунке слева), другая рядом с тем же разъёмом.
Для удобства трассировки на печатной плате отсутствуют выводы 11, 12, 17, 18 микроконтроллера. Перед монтажом панельки МК необходимо вынуть из неё пинцетом указанные контакты.
На рисунке показан внешний вид программатора, подключённый к преобразователю интерфейса ProlificUSB-to-Serial Comm Port(драйверPL-2303):
Распиновка и тип разъёмаSPIобусловлен задачами автора статьи и совместимостью с другими имеющимися программаторами.
При сборке данного программатора под рукой не оказалось резонатора на требуемую частоту 14,7456 МГц. Взамен установлен резонатор со старой материнской платы на частоту 14,3181 МГц. Сбоев в работе программатора не наблюдалось.
Подготовка к работе
После монтажа программатора необходимо запрограммировать микроконтроллер. При этом должны быть запрограммированы (т.е. установлены = "0") следующие фьюзы (ATmega8, 14.7456 МГц):
SUT1
|
= 0 |
BOOTSZ1 |
= 0 |
BOOTSZ0 |
= 0 |
CKOPT |
= 0 |
SPIEN |
= 0 |
Все остальные фьюзы должны быть незапрограммированные, т.е. установлены = "1". Как правило, установка флажка напротив названия фьюза в программе программатора, соответствует программированию соответствующего фьюза, однако бывают исключения.
Самый простой способ разово запрограммировать МК- воспользоваться компьютером сLPTпортом и какой-либо программой-программатором. Для этого нужно подключить микроконтроллер компьютеру в соответствии со схемой:
Питание микроконтроллера можно взять от блока питания компьютера (красный провод в любом разъёме). Для программирования воспользуемся простой бесплатной программой UniProF (см.файлы к статье). В архиве с программой есть справка (как любую техническую документацию, её настоятельно рекомендуется прочитать, чтобы не задавать бестолковых вопросов), поэтому отметим главное:
- при запуске программа автоматически определяет тип микроконтроллера, если, конечно, исправна и работает аппаратная часть. Загрузив в программу файл прошивки Atmega8_14745600.hex и отказавшись от загрузки файлаEEPROM, получим следующую картину:
Предварительно очистив память микроконтроллера через кнопку "Erase", жмём на кнопку "Prog" - запись выбранного файла программы в память микроконтроллера. Успешная запись программы завершается без сообщений;
- установка фьюзов. Нажав кнопку "FUSE", попадаем в окно настойки, где необходимо выставить следующее:
Как видно из рисунка, эта программа из ряда "исключений", т.е. запрограммированному фьюзу соответствует снятый флажок. После расстановки флажков жмём подряд три кнопки "Write". Всё, контроллер запрограммирован;
- в этой программе назначение сигналовSCK,MOSI,MISO,RESET наLPTпорт задаётся через кнопку "LPT pins". Настройки должны соответствовать приведённой схеме соединенияLPT и МК:
Этим диалогом следует воспользоваться при первом запуске программы, до подключения МК, (проверить правильность распиновки), а также в случае частично "палёного" порта, когда некоторые пины порта не действуют.
После установки запрограммированного микроконтроллера в программатор, подключаем кабель преобразователяUSB-COM. В диспетчере устройств операционной системы узнаём номер появившегося виртуального порта, запускаем программу HyperTerminal. Запуск программы либо из главного меню Пуск \ Программы \ Стандартные \ Связь \ HyperTerminal (C:\ ProgramFiles \ Windows NT \ hypertrm.exe), либо через файл в архиве с документацией. Основные настройки программы, кроме номера порта, следующие:
- параметры порта:
- параметры терминала:
-параметрыASCII:
После выполнения настроек включают питание программатора. При этом светодиод должен быстро мигнуть шесть раз, затем светиться постоянно (горизонтальный масштаб 100 мс/дел):
Далее, в программе HyperTerminal два раза нажимаем "Enter" на клавиатуре. Должно появиться сообщение:
Если сообщение не появляется, нужно проверить осциллографом прохождение сигнала по линииPC_TxDот преобразователяUSB-COMк микроконтроллеру. Периодически нажимая клавишу "Enter" на клавиатуре проверяют наличие и амплитуду сигнала. Верхняя эпюра соответствует сигналу на контакте 3 разъёмаRS-232, нижняя - на выводе 2 микроконтроллера. Вертикальный масштаб: 5 В/дел, горизонтальный масштаб: 20 мкс/дел:
Если данные к микроконтроллеру поступают, проверяем "ответ" микроконтроллера на полученную команду. На верхней эпюре показан сигнал на выводе 3 микроконтроллера после нажатия "Enter", на нижней - сигнал на контакте 2 разъёмаRS-232. Вертикальный масштаб: 2 В/дел, горизонтальный масштаб: 20 мкс/дел:
Амплитуды всех сигналов за исключением контакта 3 разъёмаRS-232 должны быть близки к напряжению питания программатора.
Итак, если сообщение есть, вводим цифру "2", нажимаем "Enter". После этого появляется новая строка:
Переключаем раскладку на английскую, и вводим букву "a", что соответствует десятичной цифре "10". То, что сейчас было введено - версия программатора. Должна быть 2.10, иначе, данный программатор нельзя будет использовать с некоторыми управляющими программами "верхнего уровня".
Программатор может детектировать наличие подключения к программируемому контроллеру. Делает это путём определения наличия "подтяжки" линии Reset к Vcc (со стороны программируемого микроконтроллера). Если подключение есть, то программатор включит светодиодHL1. Этот тест можно отключить или включить:
"1", "Enter" - тест включён; "0", "Enter" - тест выключен.
Сигнал 1 МГц включается / выключается в следующем "пункте меню":
"1", "Enter" - сигнал присутствует, скорость программирования небольшая; "0", "Enter" - сигнал выключен, при этом скорость программирования максимальна. После этого конфигурирование программатора можно считать законченным:
Программу HyperTerminal нужно закрыть. После этого пробуем запрограммировать какой-либо микроконтроллер. Для работы с программатором можно использовать программу AvrDUDE. Эта программа консольная, управляется из командной строки. Для упрощения использования имеется надстройка AvrdudeGUI, внешний вид которой показан на рисунке:
Скорость работы программатора можно косвенно оценить по следующему: при отключенном сигнале 1 МГц программирование микроконтроллераATmega16 (размер прошивки 8 кБ, т.е. половина всей памяти данного МК) занимает 4 секунды.
Скачать [1,5 Mb] (cкачиваний: 914) печатку, прошивку, документацию
Еще один источник обсуждения статьи…
|