Универсальная отладочная плата FastAVR для начинающих в программировании МК
ATMEL разработана на основе анализа около десятка подобных конструкций. Плата
представляет собой разумный компромисс между избыточной функциональностью
большинства из них или слишком примитивных возможностей других. Имея некоторый
опыт в работе с разными микропроцессорными системами, ниже я буду
комментировать свои мысли,- как был задуман тот или иной узел платы.
Соглашаться с ними или нет - ваше дело, но может быть частично они будут
полезны осваивающим AVR в дальнейшем...
В основу конструкции легли разработки и аппноуты Микроэлектроники
(http://www.mikroe.com/ru/). Но платы EasyAVR (да и не только) содержат слишком
много компонентов, которые привлекают пестротой и качеством изготовления
новичков в микропроцессорной технике, на самом деле половина из них становится
ненужной после удачной компиляции 5-6 примеров программ и получения опыта.
Посудите сами- зачем вам на плате куча светодиодов и кнопок подключенных на
каждый порт? Все это актуально пока вы не научитесь управлять пинами порта и
помигать индикаторами, а это произойдет весьма быстро ;-) На этот случай на
плате имеются 4 светодиода и переключатель, для начала вполне достаточно...
Итак, возможности отладочной платы:
Все это не требует доработок платы или пайки. Т.о. на начальном этапе освоения
МК возможностей FastAVR вполне достаточно. Тот, кто задумает двигаться дальше,
уже после создания собственного ПО сможет самостоятельно решить, что ему нужно
конкретно и делать прототип конструкции с собственным набором периферии. Еще
раз повторяюсь- плата создана для начала изучения МК AVR, более никаких целей
не преследовалось. Появление самой документации связано с интересом, который
проявляют многие начинающие осваивать данный тип контроллеров или еще думают с
чего начать. А начинать нужно естественно с тест-платы ;-)
МК AVR- самодостаточные контроллеры, однако процессор это еще не вся система.
"Кубики" обслуживающие его или управляемые им, сами по себе можно рассматривать
как отдельные блоки будущих конструкций. Объединив их на основной плате все
вместе можно комбинируя получить нужные результаты. Сначала плата задумывалась
на основе ATmega8, т.к. он дешев и имеет практически все возможности AVR.
Однако, вняв советам, я решил не экономить и поставить максимально доступный в
DIP-корпусе микроконтроллер- ATmega16 либо 32. Цоколевка обоих МК идентична.
Себестоимость такого решения сторицей окупается количеством портов ввода-вывода,
к которым можно подключиться хотя бы на время отладки. Совместимость
снизу-вверх для всех поколений AVR позволяет производить написание и отладку
программ используя более мощный чип, а затем произвести компиляцию для целевого
кристалла. Достаточный ресурс флеша позволяет не "зацикливаться" на
ограниченности в возможностях перепрограммирования Меги, тем более что можно
достаточно поупражнявшись, отправить доживать МК в рабочую конструкцию, прошив
его в последний раз (JTAG ICE тому первый претендент)
Для изготовления платы потребуется немного недефицитного компьютерного "хлама",
которого хватает в кладовках любого электронщика. Большинство компонентов
применено от старых либо отказавших материнских плат IBM PC либо
околокомпьютерной техники, в последнее время железо такого рода все больше
приходит в негодность и выбрасывается либо валяется без применения. Т.к. с SMD
мелочевкой практически ничего сделать не получается (отсортировать проблема,
да и время...), я распаиваю такие девайсы целиком либо строительным феном,
либо на электроплитке.
Основное описание FastAVR ниже по блочно:
Питание. Встроенный стабилизатор на 78(М)05 позволяет запитывать плату от
широко распространенных адаптеров 9-12В взятых от другой аппаратуры, которые
обычно простаивают. В обычном включении этого достаточно
(Мега-16/32 + LCD + RS232 + TXO), при использовании набортного 7-ми сегментного
LED, либо сильно прожорливой внешней периферии (сложного программатора)
стабилизатор уже очень горячий. Подключение внешнего стабилизированного
напряжения +5В возможно через pin-3 X1 (применен разъем от кулеров матплат).
Предварительно необходимо отключить джамперы JP1-JP2 группы VCC_SEL. Х1 такого
типа выбран по нескольким причинам, основная- почти всегда приходится делать
переходник для питания платы от разных адаптеров что есть в наличии либо
лабораторного БП. Проходные ферритовые дроссели (балун) FB1,FB2 фильтруют
импульсные помехи и ВЧ наводки. На диодах VD1,VD2 выполнена защита от
"переплюсовки". В нескольких местах платы установлены джамперы VCC_EXT и
GND_EXT. Через них достаточно просто при подключении периферии снимать питающее
напряжение и общую "землю".
Во многих случаях применение ЖК-индикатора может быть не оправдано по цене,
габаритам либо надежности. Например, в простейшем зарядном устройстве или
таймере вполне может потрудиться и 2-х разрядный LED индикатор. Имеющиеся у
меня в наличии сдвоенные 7-сегментные индикаторы распространенного типа с
высотой знака 14мм оказались как с общим анодом, так и с общим катодом
(списанные кассовые аппараты и системные блоки 486 компьютеров). Пришлось
применить 2-х тактные ключи на VT1-VT4 для подключения индикаторов любого типа
и соответственно панельку под сам индикатор, чтобы в дальнейшем не ломать
голову со схемотехникой.
Все подключение периферии к портам ATmega, как отмечалось ранее, выполнены
через линейные пин-блоки X3-X6. В основном на отлаживаемых платах я наблюдал
применение разъемов типа IDC-10 (2х5). Единственное их преимущество в этом
случае- наличие "ключа", дабы не попутать местами шлейф при подключении. На
этом достоинства такого способа кончаются и начинаются недостатки- даже
визуально неудобно работать с 8-ми разрядными портами, т.к. выводы не
расположены в ряд, невозможно кроме шлейфа ничем подключить встроенную
периферию. Применение пин-блоков дает прямо противоположный результат, кроме
того- через стандартную перемычку-джампер легко контролировать любые сигналы
сверху, например логическим пробником или осциллографом, не нужно тыкаться и
считать по ножкам порта боясь случайно "коротнуть" выводы. Прибавьте сюда
максимальную дешевизну и многоразовость данного соединения, ведь гораздо проще
заменить шлейф или джампер, чем разъем впаянный с плату. Тем более, что сейчас
в продаже даже в нашей глубинке можно найти вот такие ответные части разъемов
(либо использовать от старых системных блоков), что позволяет легко и быстро
комбинировать соединители (рис):
Для звука применен распространенный бипер сопротивлением около 80 Ом от матплат.
Сигнал не очень громкий, но достаточный для контроля (R23 и так выбран на
пределе). Отдельный ключ я не стал ставить, желающие могут распаять его на
местах для макетирования, обозначенных как TEMP. Небольшой совет - работая со
звуком, не забывайте в конце процедуры генерации сигнала ставить команду,
сбрасывающую в лог."0" вывод PD7, иначе после прекращения генерации там может
остаться "1" и ток через динамик будет продолжать идти, что не есть good хотя
бы по соображениям общего потребления AVR-а.
На 4-х разрядном DIP-переключателе SW4 собран задатчик логических сигналов для
портов. Здесь ситуация с количеством аналогична LED светодиодам. Т.к. входы
авров имеют внутренние подключаемые pool-up сопротивления, то соответственно
"подтяжки" к питанию ставить нет нужды. На резисторах R18-R21 собрана защита от
ошибок случайного включения портов МК на вывод. В ревизии платы 1.03 и выше
дип-переключатель при отсутствии может быть заменен джамперами. Недавно мне
понадобилось быстро сделать из платы JTAG ICE. В связи с чем в rev 1.4 введена
резисторная матрица RN1, которая позволяет аппаратно формировать лигическую "1"
на нескольких входах контроллера. Если вам это не нужно - можно не
устанавливать RN1.
Тактирование МК выбирается пин-группой CL_SEL и может осуществляться от
внешнего кварцевого резонатора Z1 (устанавливаются только JP37, JP38),
интегрального кварцевого генератора G1 (16МГц), либо с делителя на :2 и :4.
Т.о. помимо кварца можно тактировать процессор частотами 16, 8, 4 МГц. Можно
легко прикинуть быстродействие отлаживаемой программы, либо получить
стандартную тактовую частоту при запаянном спец. кварце. В-принципе при
отсутствии TXO на данную частоту можно применить любой другой генератор до
16МГц. Генератор также может пригодиться вам при "поднятии" МК из-за
неправильно прошитых фьюзов микроконтроллера, в этом случае частота
тактирования не играет роли.
Преобразователь уровней последовательного интерфейса RS-232 для
UART - неизменный атрибут большинства систем на AVR. Здесь не нужно
"изобретать велосипед", достаточно стандартной MAX232. Задействованы только
сигналы RX-TX, что вполне достаточно для большинства применений. Практически
можно подключить CTS-RTS для аппаратного управления потоком без переделки
платы, гибкими проводами на JP31-JP32 со стороны дорожек. В схеме проверены
м/сх Maxim MAX232, TI MAX232 и SIPEX SP3232- ставьте любые совместимые по
цоколевке аналоги.
Внешняя матричная клавиатура может быть выполнена на отдельной плате и
подключаться шлейфами к МК (я решил применить из манипуляторов "мышь", как
правило 2 микрика там всегда исправны). На самой отладочной плате установлен
двойной блок разъемов PS-2. Стандартная клавиатура IBM PC подключается без
аппаратных доработок, естественно при соответствующей программной поддержке со
стороны AVR. Второй разъем свободен, используйте на свое усмотрение. Как
правило клавиатура - весьма специфичная вещь, зависящая от отлаживаемого
прототипа, поэтому после некоторых раздумий я решил не ставить даже простейшие
кнопки на плате. Свои варианты плат выложу после разводки и их испытаний.
Индикатор HL7 установлен для экспериментов со встроенным аппаратным
ШИМ-контроллером.
Разъем для внутрисхемного последовательного программирования X7 сделан в
соответствии STK-200. Питание на программатор можно селективно выбирать через
JP43. В моем случае используется простейший программатор от PonyProg на буфере
74ALS(LS,F)244 с подключением через LPT. Все проверялось на
Core2Duo + i965чипсете под управлением XP SP2, никаких проблем не возникло.
Программатор запитывается через разъем с отладочной платы и удобен в работе,
т.к. буферы в нормальном режиме "уходят" в Z-состояние и абсолютно не мешают
в работе FastAVR. Подключение адаптера JTAG для внутрисхемного
программирования и отладки в реал-тайм также возможно без доработки платы
через соответствующий линейный пин-блок порта C.
Осталось упомянуть еще несколько нужных элементов:
Цепь внешнего Reset, которая у AVR достаточно простая. Ее можно отключать
через JP42, хотя эксплуатация совместно с программатором нисколько не мешает.
Вход сброса может быть перепрограммирован через фьюз как стандартный порт
ввода-вывода и использован для периферии, однако нужно помнить что в этом
случае уже невозможно повторно запрограммировать кристалл через X7 .
Переменный резистор R27, включенный потенциометром - задатчик напряжения для
опытов со встроенным АЦП, выход с него может быть подан на любой из аналоговых
входов МК.
Небольшое замечание - обратите внимание, если вы не устанавливаете этот
резистор по каким либо причинам- обязательно поставьте перемычку
(на рис. пунктиром) для нормального прохождения общей шины GND!
Немного о самой печатной плате и конструкции. Как уже отмечалось, плата
односторонняя. Мной пока проверены 2 экземпляра, изготовленные по
лазерно-утюжной технологии (одна при печати на фотобумаге от струйников, другая
на основе от самоклейки), т.о. при желании все должно получаться ;-) Если
задумаете фотоспособом- прекрасно! Джамперные линейки разведены с учетом
"запретных зон" и применения стандартных 16-ти пиновых шлейфов (планки от
GAME-PORT) даже при подключении одним крайним рядом. При отсутствии ферритовых
дросселей (я применяю от старых 286 матплат или горелых мониторов) можно смело
ставить перемычки. Рекомендую сразу под все чипы поставить панели дабы потом не
курочить плату. Не забудьте 2 перемычки с ключей на индикатор HL6.
А вот так выглядит интерфейс для проверялки ТТЛ/КМОП логики, по мере
возможностей я постараюсь рассказать, что из этого получилось.