Схема. Миниатюрные USB-программаторы для микроконтроллеров AVR

В литературе уже опубликовано большое число схем разнообразных программаторов, как простых, так и сложных, подключаемых к различным портам компьютера [1, 2]. Из USB-программаторов наибольшее распространение получили USBasp [3] и AVR910 [4]. Они относительно просты, малогабаритны, работают с большой номенклатурой микроконтроллеров. Задачей автора стала разработка ещё более простого, миниатюрного, дешевого и универсального программатора, в результате чего и появилась на свет данная конструкция.
Схема Миниатюрные USB-программаторы для микроконтроллеров AVR 1
Схема USB-программатора представлена на рис. 1. За основу взят программатор CDC-SPI японского автора Osamu Tamura [5]. В отличие от оригинала, напряжение питания программатора и программируемого микроконтроллера не 3,3, а 5 В, что позволяет расширить ряд программируемых микроконтроллеров. Кроме того, внесены некоторые изменения в программу микроконтроллера программатора.
Первый вариант прибора построен на микроконтроллере ATtiny45-20SU (DD1). В качестве тактового здесь используется генератор системы ФАПЧ микроконтроллера частотой 16,5 МГц. Это позволило отказаться от уже привычного в подобных устройствах внешнего кварцевого резонатора. Конденсатор С1 — фильтр по питанию. Резисторы R2 и R3, работая в паре со стабилитронами VD1 и VD2, защищают сигнальные линии интерфейса USB компьютера от превышения допустимого для них напряжения (согласно спецификации USB — не более 3,6 В). Вместо КС133Г могут быть применены другие отечественные или импортные стабилитроны на напряжение 3,3 или 3,6 В.
Схема Миниатюрные USB-программаторы для микроконтроллеров AVR 2
С помощью резистора R1 на интерфейсной линии D- устанавливается потенциал, сигнализирующий компьютеру, что к нему подключено низкоскоростное (LS) USB-устройство. Этот резистор может быть номиналом от 1,5 до 2,2 кОм. Резисторы R4—R7 служат для защиты выходов микроконтроллера от замыканий и для согласования логических уровней в случае раздельного питания программируемого микроконтроллера и программатора. Их номиналы могут находиться в пределах от 270 до 560 Ом.
Для уменьшения размеров печатной платы в программаторе установлена миниатюрная USB-розетка Х1 типа miniUSB. Для её соединения с розеткой USB компьютера необходим соответствующий кабель. Программируемый микроконтроллер подключают к двухрядной 10-контактной розетке Х2 программатора. Назначение её контактов соответствует принятому в стандартных программаторах STK200 и STK300.
Схема Миниатюрные USB-программаторы для микроконтроллеров AVR 3
Собран программатор на односторонней печатной плате из фольгированного стеклотекстолита, показанной на рис. 2. Большинство деталей на ней — для поверхностного монтажа. Внешний вид собранной платы — на фотоснимках рис. 3 и рис. 4.
Если не удалось приобрести микроконтроллер ATtiny45-20SU, можно собрать аналогичный программатор по схеме, изображённой на рис. 5, на более распространённом микроконтроллере ATtiny2313-20PU. В отличие от предыдущего варианта, здесь имеется кварцевый резонатор ZQ1 на 12 МГц. Конденсаторы С2 и СЗ могут быть ёмкостью 18…24 пФ. Кроме того, вместо сложной в монтаже миниатюрной розетки miniUSB применена розетка обычного размера USB-BF. Печатная плата программатора (рис. 6) немного больше предыдущей и рассчитана на установку обычных деталей с выводами, монтируемыми в отверстия. Внешний вид этого варианта программатора показан на рис. 7.
Схема Миниатюрные USB-программаторы для микроконтроллеров AVR 11
Во FLASH-память микроконтроллера программатора необходимо загрузить коды из файла tiny45.hex или tiny2313.hex (имя файла указывает на тип микроконтроллера, для которого он предназначен). Назначение выводов микроконтроллеров, используемых в режиме их программирования, указано в таблице.
Микроконтроллер ATtiny2313 можно запрограммировать до его установки на плату изготовленного программатора с помощью любого другого программатора, предназначенного для микроконтроллеров семейства AVR. Учтите, что в программе PonyProg, часто используемой для управления программаторами, подключаемыми к портам LPT и СОМ компьютера, не предусмотрена работа с микроконтроллерами ATtiny2313 и ATtiny45. Однако этот недостаток легко преодолеть, указав в качестве программируемого любой микроконтроллер семейства AVR с объёмом FLASH-памяти не менее 4 Кбайт, например, ATmega8. На сообщение о неправильном выборе типа микроконтроллера достаточно ответить «Ignore», после чего загрузка кода будет выполнена правильно.
Схема Миниатюрные USB-программаторы для микроконтроллеров AVR 4
Кроме загрузки FLASH-памяти микроконтроллера ATtiny2313 в нём необходимо запрограммировать разряд конфигурации BODLEVELO (установить его значение равным 0). Этим будет задан порог срабатывания внутреннего детектора понижения напряжения питания микроконтроллера равным 1,8В. Состояния остальных разрядов конфигурации, установленные изготовителем этого микроконтроллера, оставляют неизменными.
Чтобы избежать перепайки микроконтроллера ATtiny45 для повторного программирования (о чём будет рассказано ниже), его необходимо программировать уже установленным на плату. Внешний программатор подключают к её разъёму Х2 по схеме, изображённой на рис. 8. Поскольку микроконтроллер в изготовленном программаторе на время загрузки в него программы из ведущего (master) становится ведомым (slave), соответственно изменяются функции контактов 1 и 9 разъёма Х2, а его контакт 5 из выхода превращается во вход. Если используемый в качестве внешнего программатор не имеет выхода напряжения VCC (+5 В) для питания программируемого микроконтроллера, контакт 2 разъёма Х2 следует оставить свободным, а напряжение питания подать, например, от разъёма USB.
Схема Миниатюрные USB-программаторы для микроконтроллеров AVR 5
По аналогичной схеме (рис. 9) можно соединить с внешним программатором и уже установленный на плату микро-контроллер ATtiny2313. Но выход RESET этого программатора в этом случае придётся соединить с выводом 1 микроконтроллера отдельным проводом.
После загрузки FLASH-памяти микроконтроллера ATtiny45 в нём программируют (устанавливают равными нулю) разряды конфигурации CKSEL1, CKSEL2, CKSEL3 (тактирование микроконтроллера от генератора системы ФАПЧ), BODLEVEL0 (порог детектора понижения напряжения питания 1,8 В). Состояние остальных разрядов не изменяют.
Временно, до проверки работоспособности изготовленного программатора, не программируют разряд RSTDSBL, оставляя его значение равным 1, а вывод 1 микроконтроллера — входом необходимого для его перевода в режим программирования сигнала RESET. В линию ввода—вывода РВ5, как требуется для полноценной работы изготовленного программатора, этот вывод пока не превращают. Иначе станет невозможно с помощью обычного программатора изменить конфигурацию микроконтроллера или неудачно загруженную в него программу.

Собранный программатор с запрограммированным, как описано выше, микроконтроллером соединяют соответствующим кабелем с USB-разъёмом компьютера. Если всё сделано верно, на экране монитора появится системное сообщение «Найдено новое оборудование MICROPROG», а затем просьба установить его драйвер.
В операционных системах Windows 2000, Windows ME, Windows XP следует выбрать пункт «Установка из указанного места» и указать папку raw, находящуюся в скопированной из [6] или из приложения к статье папке avrcdcjnf на одном из дисков компьютера. На предупреждение системы Windows XR что устанавливаемое программное обеспечение на совместимость с ней не тестировалось, необходимо ответить «Всё равно продолжить».
Схема Миниатюрные USB-программаторы для микроконтроллеров AVR 6
Для других версий Windows при установке драйвера следует вместо raw выбрать в папке avrcdc_inf другую папку с соответствующим названием (vista64, xpvista7). Автор опробовал описанные программаторы только на компьютере с операционной системой Windows XP (SP2 и SP3), поэтому их работу с другими ОС гарантировать не может.
После установки драйверов в системе появится новый виртуальный СОМ-порт, в чём можно убедиться, открыв диспетчер устройств (рис. 10). В свойствах этого порта (рис. 11) можно увидеть, что именно он обслуживает подключённый к компьютеру программатор
Убедившись, что программатор на микроконтроллере ATtiny45 опознан операционной системой и успешно инициализирован, можно отключить его от компьютера, вновь подключить к внешнему программатору и запрограммировать конфигурационный разряд RSTDISBL. Для программатора с микроконтроллером ATtiny2313 эта операция не требуется.
Схема Миниатюрные USB-программаторы для микроконтроллеров AVR 7
Автором разработана и предлагается читателям компьютерная программа MicroProg.exe для работы с описанными программаторами. Её главное окно показано на рис. 12. Программатор необходимо присоединять к компьютеру до запуска этой программы. А в случае отключения и повторного подключения программатора потребуется перезапустить программу.
Для автоматического определения типа подключённого к программатору микроконтроллера служит экранная кнопка «Автоопределение». При нажатии на неё из микроконтроллера считываются и отображаются на экране его идентификатор, записанные в калибровочных и конфигурационных ячейках значения, состояние защиты памяти.
Если автоматически определить тип микроконтроллера программе не удаётся, можно выбрать его из выпадающего списка «Ручной выбор микроконтроллера». При этом конфигурация и защита памяти будут установлены принятыми для микроконтроллера этого типа по умолчанию. Поэтому нужно быть внимательным, чтобы не ошибиться.

Следует заметить, что номенклатура микроконтроллеров, с которыми может работать предлагаемая программа, отличается от таковой у распространённого программатора AVRDUDE [7]. Во-первых, Microprog не работает с микроконтроллерами семейства Classic и теми, объём памяти которых превышает 128 Кбайт. Во-вторых, он может работать с новыми микроконтроллерами, ещё не включёнными в список AVRDUDE. Кроме того, автор планирует обновлять предлагаемую программу по мере выпуска новых микроконтроллеров.
Схема Миниатюрные USB-программаторы для микроконтроллеров AVR 8
Одна из наиболее полезных особенностей описываемого программатора — возможность изменять частоту тактовых импульсов SCK. Из выпадающего списка «Частота тактового сигнала» можно выбрать одно из пяти фиксированных значений: 1 МГц, 250 кГц, 50 кГц, 10 кГц, 2 кГц. По умолчанию при подключении программатора к компьютеру устанавливается частота 1 МГц. Если тип подключённого к программатору микроконтроллера автоматически не определяется, возможно, для него такая   частота   импульсов   SCK слишком высока. Попробуйте понизить её и повторить попытку.

Может возникнуть вопрос, зачем нужна столь низкая частота, как 2 кГц? Дело в том, что автор однажды столкнулся со следующей проблемой. При включении в микроконтроллере ATtiny13 внутреннего тактового генератора частотой 128 кГц и запрограммированном разряде конфигурации CKDIV8 фактическая тактовая частота равна 16 кГц. Как следует из инструкции по программированию микроконтроллеров AVR, частота импульсов SCK должна быть меньше тактовой как минимум в 2,5 раза — в данном случае около 6 кГц. Минимальная же частота импульсов SCK в использовавшемся тогда программаторе USBasp [3] равна 8 кГц, чего, как оказалось, недостаточно. Совершенно исправный микроконтроллер оказался непригодным к употреблению, пока не был создан описанный здесь программатор, который смог вернуть его к жизни.
Схема Миниатюрные USB-программаторы для микроконтроллеров AVR 9
В поле «Идентификатор» выводится трехбайтный шестнадцатеричный код, уникальный для каждого типа микроконтроллеров. Это поле доступно только для чтения.
Значения, выведенные в поле «Калибровочные ячейки», занесены в память микроконтроллера заводом-изготовителем при калибровке его внутреннего тактового RC-генератора. Число указанных значений зависит от числа возможных фиксированных значений частоты этого генератора. У микроконтроллера ATtiny13 на рис. 12 их два — для 4,8 МГц и для 9,6 МГц. Это поле также доступно только для чтения.

В блоке «Конфигурационные ячейки» отображена конфигурация микроконтроллера. В микроконтроллерах семейства AVR имеются три конфигурационных байта: старший (High Fuse, HF), младший (Low Fuse, LF) и дополнительный (Extended Fuse, EF). В представленной программе предусмотрены два способа задавать их значения:
1. Поразрядно, устанавливая или снимая флажки соответствующих разрядов (важно помнить, что установленный флажок означает программирование разряда — присвоение ему значения 0).
2. Побайтно, задавая шестнадцатеричное значение всего конфигурационного байта в правой части окна программы.
Схема Миниатюрные USB-программаторы для микроконтроллеров AVR 10
Оба способа равноценны. Изменения, внесённые одним способом, немедленно отображаются и другим.
Экранная кнопка «Чтение» позволяет прочитать из микроконтроллера его конфигурацию и вывести её на экран. Экранная кнопка «Запись» — загрузить установленную на экране пользователем конфигурацию в микроконтроллер.
При нажатии на экранную кнопку «Верификация» происходит сравнение заданной пользователем конфигурации с фактически установленной в микроконтроллере.
С помощью экранной кнопки «По умолчанию» в окне программы отображается конфигурация, принятая для микроконтроллера данного типа по умолчанию согласно его документации. Чтобы занести её в микроконтроллер, необходимо воспользоваться экранной кнопкой «Запись».

В блоке «Ячейка защиты» отображается состояние разрядов защиты памяти микроконтроллера от несанкционированного считывания или изменения её содержимого. Компоненты этого блока такие же, как в блоке «Конфигурационные ячейки».
В блоке «Программирование» осуществляют операции с FLASH-памятью и EEPROM микроконтроллера. Экранная кнопка «Стирание кристалла» предназначена для стирания содержимого ячеек защиты памяти, FLASH и EEPROM (если разряд конфигурации EESAVE запрограммирован, EEPROM не стирается). При этом содержимое конфигурационных ячеек не изменяется.

Имеются два почти идентичных подблока: «Программирование FLASH» и «Программирование EEPROM». В первом при нажатии на экранную кнопку «Файл HEX» открывается диалоговое окно выбора файла с расширением имени .hex. Имя выбранного файла и путь к нему отображаются в поле, справа от кнопки. При этом поле является редактируемым, т. е. путь к файлу можно указать и вручную.
Экранная кнопка «Чтение» позволяет прочитать содержимое FLASH-памяти микроконтроллера и сохранить его копию в выбранном НЕХ-файле. При этом можно указать имя несуществующего файла — он будет автоматически создан. О завершении операции известит появившееся на экране сообщение.

С помощью экранной кнопки «Запись» загружают содержимое выбранного НЕХ-файла во FLASH-память микроконтроллера. По окончании загрузки на экране появится сообщение об этом. Учтите, что перед загрузкой всегда автоматически выполняется команда «Стирание кристалла».
Нажав на экранную кнопку «Верификация», сверяют содержимое выбранного НЕХ-файла и FLASH-памяти микроконтроллера. По завершении процесса на экран выводится сообщение о результате сверки. Причинами ошибок может стать включённая защита памяти микроконтроллера либо неправильный выбор файла для сверки.
Назначение кнопок с идентичными названиями в подблоке «Программирование EERPOM» аналогично описанным выше, но все операции относятся к этой области памяти, а файлы имеют расширение имени .еер.
В нижней части окна программы имеется полоса, отображающая ход процесса.

Прилагаемые файлы:   microprog.zip

ЛИТЕРАТУРА
1 Хлюпин Н. Два универсальных программатора. — Радио, 2006. № 5, с. 27—30.
2. Котов И. Программатор микроконтроллеров AVR. — Радио, 2009, № 1, с. 23, 24.
3. Fischi Т. USBasp — USB programmer for Atmel AVR   controllers.   —    www.fischl.de/usbasp/   .
4. Рыжков А. USB-программатор микроконтроллеров AVR и AT89S, совместимый с AVR910. — Радио, 2008, № 7, с. 28, 29.
5. Osamu Tamura. Virtual COM Port over Low-Speed USB AVR-CDC. CDC-SPI. —    www.recursion.jp/avrcdc/cdc-spi.html   .
6. Osamu Tamura. Virtual COM Port over Low-Speed USB AVR-CDC. Downloads. —    www.recursion.jp/avrcdc/download.html
7. AVRDUDE-AVR Downloader/UploaDEr. —   www.nongnu.org/avrdude/   .

С. СОКОЛ, г. Мариуполь, Украина
«Радио» №2 2012г.

Читайте также:

1 комментарий

  1. radiouser:

    Спасибо за Ваше детище. Побольше бы таких. И на этом сайте.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *