Исправление фьюзов AVR. Схема приставки для восстановления FUSE-битов в AVR микроконтроллерах Итак, возможности отладочной платы

В основу конструкции легли разработки и руководства по применению отладочных плат фирмы Mikroelektronika. Выпускаемые этой фирмой платы EasyAVR (да и не только) привлекают начинающих осваивать микроконтроллерную технику качеством изготовления и разнообразием установленных на них компонентов. На самом деле половина из них становится ненужной после проверки в действии пяти-шести учебных программ Посудите сами, на плате имеются множество светодиодов и кнопок, подключенных к каждой линии каждого порта. Но они необходимы экспериментатору лишь до тех пор, пока он не научится управлять уровнями сигналов и мигать индикаторами, а это происходит весьма быстро. На моей плате всего четыре светодиода и переключатель, для начала вполне достаточно...

Разработанной плате я дал название FastAVR. Имея размеры 98x127 мм и односторонний печатный монтаж, она вполне пригодна для изготовления в домашних условиях. Применены микросхемы только в корпусах DIP, установленных в панели, что позволяет легко заменять их в процессе экспериментов. Микроконтроллер может тактироваться как от кварцевого резонатора, так и от установленного на плате тактового генератора с делителем частоты Предусмотрен разъем для подключения стандартного программатора STK-200 с селективной подачей на него питания и с возможностью подключения адаптера JTAG При необходимости можно запрограммировать и микроконтроллер, предназначенный для работы в другом устройстве.

На плате имеются самые необходимые для макетирования отлаживаемых конструкций периферийные устройства: двухразрядный семиэлементный светодиодный индикатор, символьный ЖКИ, интерфейсы RS-232, SPI, PS/2 (для подключения стандартной компьютерной клавиатуры или "мыши"), микросхема EEPROM, звуковой сигнализатор. Предусмотрена возможность подключения большинства этих устройств к любым выводам любых портов микроконтроллера в произвольных сочетаниях Все порты доступны и для подключения устройств, расположенных вне платы. Имеющиеся на плате устройства, в том числе кварцевый генератор и светодиодные индикаторы, можно подключить и к устройствам вне ее Все эти подключения не требуют пайки и выполняются установкой перемычек между имеющимися на плате штыревыми контактами или между ними и внешними устройствами.

Первоначально была задумана отладочная плата с дешевым микроконтроллером АТmega8, обладающим практически всеми присущими его семейству (AVR) возможностями Однако я решил не экономить и применить микроконтроллер этого же семейства в корпусе DIP с максимально возможным числом выводов (40) - ATmega16 или ATmega32. Расположение выводов у них одинаково, и на описываемую плату может быть установлен любой. Большое число выводов позволяет подключить больше различных периферийных устройств, которые могут потребоваться при отладке программы. Поскольку микроконтроллеры семейства AVR программно совместимы, отлаженную на более мощном из них программу несложно, как правило, перенести на менее мощный Учитывая, конечно, их различия.

На одном и том же экземпляре установленного на отладочной плате микроконтроллера можно отладить немало различных программ. Программная (FLASH) память современных микроконтроллеров допускает настолько много циклов перепрограммирования, что при внесении многочисленных изменений в программу в процессе ее отладки можно не задумываться о возможном исчерпании ресурса Даже при появлении первых признаков этого (некоторые ячейки памяти не программируются с первого раза) микроконтроллер, отработавший свое на отладочной плате, не стоит выбрасывать. Его можно, запрограммировав в последний раз, отправить "на постоянную работу" в одну из ранее отлаженных конструкций.

Схема основного узла платы FastAVR изображена на рис. 1. Все подключение периферии к портам микроконтроллера DD2 производится через двухрядные 16-контактные штыревые колодки ХР1-ХР4. Четные штыри каждой из них подключены к выводам портов микроконтроллера, а нечетные - к имеющимся на плате периферийным устройствам. При сборке макета для отладки соседние штыри удобно соединять обычными джамперами, а находящиеся на удалении, в другой колодке или даже на другой плате, - перемычками из отрезков гибкого изолированного провода, снабженными на обоих концах гнездами от разъемов (рис. 2). На гнезда надеты термоусаживаемые трубки.


В процессе отладки к тем же штырям удобно подключать контрольно-измерительные приборы: осциллограф, частотомер, генератор испытательных сигналов. Расположение штырей в ряд в порядке возрастания номера разряда порта облегчает поиск нужного и значительно снижает риск их перепутать. Такое решение, по моему мнению, гораздо удобнее, чем использование в большинстве промышленных отладочных плат для внешних подключений десятиконтактных двухрядных разъемов IDC-10. Единственное их достоинство - наличие ключа, обеспечивающего правильную стыковку с ответной частью разъема. А при подключении единичного провода или щупа измерительного прибора приходится всякий раз считать контакты, вспоминая порядок их соответствия выводам микроконтроллера.

Если перемычки S2-S4 сняты, a S5 и S6 установлены, к внутреннему тактовому генератору микроконтроллера подключен кварцевый резонатор ZQ1, частота которого может быть выбрана любой, необходимой для решаемой задачи. На плате имеется также интегральный кварцевый генератор G1 на 16 МГц. Триггеры микросхемы DD1 делят его частоту на два и на четыре. Сняв перемычки S5, S6 и установив одну из перемычек S2-S4, можно подать на тактовый вход микроконтроллера (вывод 13) импульсы частотой 4, 8 или 16 МГц. Это обеспечит работу микроконтроллера при любой конфигурации, в которой внутренний тактовый RC-генератор выключен.

Тактирование от внешнего генератора может быть полезным и для восстановления работоспособности микроконтроллера, конфигурация которого запрограммирована ошибочно. Об этом можно прочитать в .

Хотя микроконтроллер содержит собственную энергонезависимую память данных, зачастую ее объем оказывается недостаточным для решаемой задачи. Проблему можно решить подключением к микроконтроллеру внешней микросхемы памяти нужного объема. На плате FastAVR это сделано по схеме, изображенной на рис. 3 Микросхема DS1 серии 24С или 24LC - перепрограммируемая энергонезависимая память с интерфейсом I2C. Входы АО-А2 подключены таким образом, что младший разряд ее адреса ведомого на интерфейсной шине равен 1, а два следующих за ним - нулевые.

На рис. 4 показана схема имеющихся на плате FastAVR узлов управления и индикации. Счетверенный DIP-выключатель SA1 с помощью перемычек подключают к выводам портов микроконтроллера. Резисторы R4-R7 предохранят эти выводы, если они случайно запрограммированы как выходы от перегрузки при замкнутых выключателях. Резисторы сборки DR1 поддерживают высокий логический уровень на входах микроконтроллера, когда выключатели SA1.1-SA1.4 разомкнуты. Пятый "лишний" резистор сборки также может быть использован для подачи такого уровня в какую-либо цепь
Четыре сигнальных светодиода HL1 -HL4 светятся при высоких логических уровнях на выходах, к которым они подключены, и не светятся при низких. Резисторы R8-R11 ограничивают ток.

Коммутаторы общих электродов двухразрядного семиэлементного светодиодного индикатора HG1, собранные на транзисторах VT1-VT4. могут управлять индикаторами как с общими анодами (например, DA56-11), так и с общими катодами элементов (например, DC56-11) Нужно лишь обеспечить нужную полярность программно формируемых управляющих импульсов, подаваемых на резисторы R12-R21. Подобные индикаторы несложно найти в отслуживших свой срок кассовых аппаратах и системных блоках компьютеров. Сняв перемычку S7, можно отключить элемент Н (десятичную точку) младшего разряда индикатора HG1.

Разъем ХР5 служит для подключения к плате FastAVR распространенных символьных ЖКИ с встроенными контроллерами. Фактически это двухрядный 34-контактный разъем IDC-34MS, но используются только 14 из 17 контактов одного ряда. Их номера, показанные на схеме, не соответствуют стандартным для этого разъема, но совпадают с номерами выводов наиболее распространенных ЖКИ. Наличие такого разъема позволяет воспользоваться для связи с индикатором стандартным компьютерным 34-про-водным плоским кабелем, предназначенным для соединения привода гибких дисков с материнской платой. В отверстия интерфейсных контактных площадок ЖКИ вставлена и припаяна к ним 14-контактная штыревая колодка. На нее надевают один разъем плоского кабеля, а второй вставляют в разъем ХР5. Контакты ЖИЖИ 1 соединяют с выводами портов микроконтроллера в соответствии со схемой включения ЖКИ в отлаживаемом устройстве. Плата с подключенным индикатором показана на рис. 5.

Описанная методика подключения ЖКИ сравнительно сложна, но удобна тем, что индикаторы разных типов, имеющие одинаковую цоколевку, можно быстро менять, не рискуя перепутать порядок соединения их выводов с портами микроконтроллера. Подстроечный резистор R23 служит регулятором контрастности.

Звуковой сигнализатор НА1 - электромагнитный излучатель сопротивлением 80 Ом, найденный на материнской плате компьютера. Диод VD1 подавляет выбросы напряжения самоиндукции, возникающие на обмотке сигнализатора при ее питании импульсным напряжением. Уменьшать сопротивление резистора R22, чтобы повысить громкость звука, не следует. Это приведет к перегрузке выхода микроконтроллера.

Небольшой совет. Не забывайте в конце программной процедуры генерации звукового сигнала подать команду, устанавливающую низкий уровень на выходе PD7 микроконтроллера. Если уровень здесь оставить высоким, ток через излучатель НА1 продолжит течь и в паузах между сигналами, что приведет и к общему повышению потребления энергии микроконтроллером.

Схема внешних интерфейсов отладочной платы изображена на рис. 6. К разъему XS1 можно подключить компьютерную клавиатуру или "мышь", а разъем XS2 соединить с СОМ-портом компьютера. Микросхема DA1, включенная по типовой схеме, согласует уровни сигналов RS-232 и микроконтроллера. Перемычки S8-S10 представляют собой ограниченные контактными площадками тонкие участки печатных проводников, которые можно перерезать, если возникнет необходимость использовать в отлаживаемом устройстве не только информационные, но и управляющие сигналы интерфейса RS-232.
Дроссели L1-L5 подавляют высокочастотные помехи. Это - надетые на провода небольшие ферритовые трубки. Такие легко найти на компьютерных платах.

Чтобы загрузить в установленный на плате FastAVR микроконтроллер коды программы, разъем ХР6 соединяют с программатором. На время работы с ним перемычку S1 (см. рис. 1) рекомендуется снять, отключив этим имеющуюся на плате цепь начальной установки микроконтроллера. Если программатор имеет собственный источник питания, необходимо снять перемычку S11. Когда она установлена, программатор питается от отладочной платы.

Я использовал программатор, аналогичный STK-200. Его схему и чертеж печатной платы можно найти на рис. 8 и 9 в . В этом программаторе всего одна микросхема КР1564АП5 (74HC244AN), подключают его к порту LPT компьютера. Устанавливать в программаторе кварцевый резонатор нет необходимости, он имеется на отладочной плате. При работе с этим программатором и программой PonyProg на компьютере с процессором Core2Duo+, чипсетом 1965 и операционной системой Windows XP SP3 никаких проблем не возникло.

Схема узла питания отладочной платы показана на рис. 7. На контакт 3 разъема ХР7 от внешнего источника можно подать стабилизированное напряжение +5 В. Перемычки S12, S13 обязательно должны быть сняты. Если имеется источник постоянного напряжения 9... 16 В, его плюсовой вывод соединяют с контактом 2 того же разъема и устанавливают перемычки S12, S13. В этом случае внешнее стабилизированное напряжение +5 В не требуется, его получают с помощью интегрального стабилизатора DA2.

Когда светодиодный индикатор HG1 не используется и к плате не подключены какие-либо потребляющие большой ток внешние устройства, температура корпуса стабилизатора DA2 невелика. Если же, несмотря на наличие теплоотвода, стабилизатор сильно нагревается, рекомендуется перейти на питание от внешнего достаточно мощного источника напряжения 5 В. О наличии напряжения питания сигнализирует светодиод HL5.

Диоды VD2 и VD3 защищают от неправильной полярности подключения источника питания. Дроссели (ферритовые трубки) L6 и L7 подавляют высокочастотные помехи. Установленные в различных местах платы контакты ХТ12-Х17 (+5 В) и ХТ18-ХТ22 (общий) позволяют питать напряжением 5 В различные внешние устройства. Кроме того, к контактам ХТ18-ХТ22 удобно подключать общий провод измерительных приборов.

Чертеж печатной платы изображен на рис. 8. Она односторонняя из фольгированного стеклотекстолита толщиной 1,5 мм. Обратите внимание, что две изображенные штриховыми линиями перемычки из изолированного провода устанавливают со стороны печатных проводников. Остальные делают из провода без изоляции и располагают со стороны деталей. Для микросхем DA1, DD1, DD2, DS1 и светодиодного индикатора HG1 на плате установлены панели, что позволяет при необходимости быстро заменять эти элементы. При отсутствии ферритовых трубок вместо дросселей L1-L7 можно установить перемычки.

Рядом с разъемом XS1 имеется посадочное место для еще одного такого же разъема, обозначенного XSV. Хотя его выводы никуда не подключены, это позволяет без проблем установить здесь снятую с компьютерной материнской платы сдвоенную розетку MDN-6F. Разъем XS2 - розетка DB-9F.

Штыревые колодки ХР1 -ХР4, штыри ХТ1 -ХТ22 и предназначенные для установки перемычек S1 - S7, S11-S13 изготовлены из двухрядных разъемов серии PLD или однорядных серии PLS. Чтобы получилось нужное число контактов, от них отделены отрезки соответствующей длины или добавлены отрезки с недостающими контактами.

Обратите внимание, что рядом с контактными площадками для штырей ХТ4- ХТ11 имеются свободные контактные площадки. Это позволяет установить здесь двухрядную штыревую колодку, не подверженную "расшатыванию" при частых перекоммутациях. О разъеме ХР5 (IDC-34MS) было сказано ранее. Разъем ХР6 (для программатора) - десятиконтактный той же серии (IDC-10MS). Трехконтактный разъем питания ХР7 снят с материнской платы, где он использовался для подключения вентилятора. Это сняло проблему поиска ответной части разъема, нужной для подключения к плате источника питания.

В нижней (по чертежу) части платы имеется заполненное контактными площадками прямоугольное поле - резерв для размещения всевозможных дополнительных элементов, которые могут потребоваться в процессе отладки. На изготовленной мною плате здесь был установлен, например, переменный резистор номиналом 22 кОм. На него было подано напряжение +5 В, а снимаемое с движка регулируемое использовалось для проверки АЦП микроконтроллера.

Интерфейс RS-232 очень удобно использовать при отладке, дополнив отлаживаемую программу модулем, посылающим необходимую информацию через USART микроконтроллера. Запустив на компьютере, с СОМ-портом которого соединен разъем XS2 отладочной платы, терминальную программу, можно наблюдать на экране принимаемые сообщения.


Я использовал программу Terminal v1.9b, которую можно найти в Интернете с помощью любой поисковой системы. Окно этой программы с примерами сообщений, принятых от отлаживаемого устройства и переданных ему, показано на рис. 9. Для нормального отображения русского текста необходимо, нажав на экранную кнопку "Set font", выбрать в открывшемся окне шрифт - Arial, начертание - обычный размер - 8, набор символов - кириллический.

Файл печатной платы в формате Sprint Layout 5.0 и примеры программ, демонстрирующих работу имеющихся на плате узлов:

ЛИТЕРАТУРА
1 Баранов В. Восстановление конфигурации микроконтроллеров AVR. - Радио. 2009, № 11, с. 26-29.

С. БОРИСОВ, г. Узловая Тульской обл.
"Радио" №№8-9 2010г.

В общем у таймера есть регистр сравнения OCR** и когда значение в таймере совпадает со значением регистра сравнения OCR** может произойти 2 вещи:

  • Прерывание
  • Изменение состояния внешнего вывода сравнения OC**

Теперь мы можем настроить ШИМ когда счётчик досчитает до значения OCR** напряжение на выбранной нами ножке OC** измениться от 5 до 0. Когда таймер досчитает до конца и начнёт считать сначала изменим напряжения с 0 до 5, на выходе у нас будут прямоугольные импульсы

Есть 3 режима работы ШИМ

СТС (сброс при совпадении) - Это можно назвать ЧИМ частотно-импульсно моделированный сигнал, когда таймер досчитает до значения OCR** он сбрасывается и меняет значение OC** на противоположное. Таким образом скважность ШИМ всегда одинаковая.

Это используют когда нужно отсчитывать точные периоды, или генерировать прерывания через определённое время.

Fast PWM (быстрый ШИМ) - счётчик считает от 0 до 255, после чего сбрасывается в 0.

Когда значение таймера совпадает с OCR** соответствующий вывод сбрасывается в 0, при обнулении ставиться 1.

Чаще всего используется как обычный ШИМ.

Phase Correct PWM (ШИМ с точной фазой) - в этом режиме счётчик считает от 0 до 255, а потом считает в обратном направлении до нуля. При первом совпадении с OCR** вывод сбрасывается в 0, при 2 совпадении (когда счётчик идёт обратно), ставиться 1.

Используют для того чтобы не сбивалась фаза при изменении скважности.



Если мы хотим работать с выводом OC1A ставим биты в COM1A1 COM1A0
Вообще "/" означает ИЛИ. TCNT1 = OCR1A для ШИМ на выводе OC1A

Timer/Counter Mode of Operation - режим работы таймера/счетчика.

Top - значение TCNT1 при котором происходит переключение значения вывода OC**.

TOV1 Flag Set on - при каких значениях устанавливается бит регистра GIFR

Выбираем из последней таблицы тот режим который нам нужен, не смотрим на Top . Из 2 таблицы выбираем любой из 2 последних вариантов. Остаётся только расставить нужные биты в регистрах.

#define F_CPU 8000000UL #include #include int main() { DDRD = 0xFF; OCR1A=0xC0; // Сравниваем с этим значением OCR1B=0x40; //Настройка ШИМ и таймера TCCR1A|=(1<CS10 выставили 1, он считает с частотой МК про то как настроить частоту таймера

Иногда случается что исправный, правильно подключенный микроконтроллер перестает определяться программой для прошивки. Это может происходить в следствии нескольких причин:

  1. Программирование через SPI запрещено
  2. Ножка RESET стала обычным пином порта
  3. Неправильно выбран источник тактирования

Если в первом и втором случае без параллельного программатора не обойтись, то при неправильном выбранном источнике тактирования, можно попробовать методы описанные в этом небольшом руководстве. Для этого нам потребуются:

  • Кварц ~4 МГц
  • Конденсаторы от 12 пФ до 22 пФ (2 шт)
  • Резистор 10 кОм
  • Микросхема 74HC00
  • Прямые руки:-)

Предположим, что мы не знаем какой источник тактирования у нас выбран. Существуют следующие источники тактирования:

  • Кварцевый резонатор
  • Внешняя RC цепочка
  • Внешней генератор

Есть еще внутренний RC генератор но по понятным причинам он нам не интересен. Для воскрешения контроллера нужно последовательно перебирать возможные варианты.

Кварцевый резонатор

Кварцевый резонатор подключается к ногам XTAL2 и XTAL1. Каждая нога кварца подсоединена к конденсатору который в свою очередь подключен на землю. Конденсаторы любые от 12 до 22 пф.

Если подключение кварца не помогло то пойдем дальше

Внешняя RC-цепочка

Использовать ее для тактирования я бы не стал, ибо частота будет плавать как сами знаете что в проруби. Подключается она к контроллеру вот таким образом:

ВАЖНО: Вывод XTAL2 должен болтаться в воздухе! Подключать его никуда не надо. Если и это не помогает то остается последний вариант

Внешний генератор

Этот генератор можно сделать практически из любой логики или например из таймера 555. Под рукой оказалась микросхема 74HC00. Вместо нее можно использовать нашу к155ла3. Схема предельно проста и не требует наладки:

Генератор работает на частоте около 1.3 МГц. Естественно ее можно подстроить меняя номиналы резистора и конденсатора, но вряд-ли в этом будет необходимость. Плату я для него не делал т.к. смысла не было. Ногу XTAL2 нужно оставить болтаться в воздухе. Если и после этого контроллер не завелся, то это значит что контроллер умер или программирование по SPI запрещено или отключен RESET. Помочь тут может только параллельный программатор.

Вопросы, предложения, уточнения кидаем в комментарии.

Один из лучших компиляторов Basic-подобного языка для серии восьмибитных микроконтроллеров AVR .

Среда разработки FastAVR характеризуется удобным, продуманным интерфейсом и включает в себя редактор, ассемблер, компилятор и программатор микроконтроллеров. Приложение имеет подсветку команд, дружелюбный интерфейс, а также множество других решений, предназначенных для облегчения процесса создания и отладки программ. FastAVR использует восьми-, а не шестнадцатибитную адресацию и выгодно отличается от других компиляторов созданием чрезвычайно компактного кода (особенного для контроллеров с ОЗУ менее 256 байт). Кроме того в программу встроены дополнительные функции знакогенератора для LCD, калькулятора таймеров, терминала. Список поддерживаемых микроконтроллерных устройств компании AVR включает в себя серии: 2313, 2323, 2333, 4433, 8515, 8535, ATiny13, ATiny26, ATmega163, Atmega8, Atmega16, Atmega32, ATmega64, ATmega128 и многие другие.

Используемый в FastAVR язык состоит из знакомых команд Basic, значительно расширенных дополнительными полезными функциями (I2C, 1-Wire, LCD и некоторыми другими). Компилятор поддерживает структурное программирование, улучшающее читаемость программ. Данное приложение компилирует программу, расположенную в активном окне редактора, в стандартный ассемблерный код AVR, используя бесплатный ассемблер от Atmel (входящий в состав набора программ ). В результате компиляции и в том случае, если в исходном тексте нет ошибок, создается файл с расширением *.asm. Среда программирования выводит сгенерированный код на ассемблере, что пригодиться опытным разработчикам.

FastAVR может использовать фактически любой из существующих внутрисхемных программаторов для контроллеров AVR, подключаемых к последовательному или к параллельному порту. Исходный код программы набирается подобно обычному тексту в виде символов во встроенном редакторе данного ПО. Помимо отображения исходного текста редактор FastAVR самостоятельно правит программу, выделяет цветом команды, переменные и другие данные. Также он поддерживает отключаемую возможность выравнивания блоков текста. Код программы можно просмотреть и отредактировать в любом обычном редакторе. Тем не менее, при написании программы нужно соблюдать ряд правил, заданных синтаксисом FastAVR. Например, в каждой программе компилятору необходимо указывать тип используемого контроллера, тактовую скорость и размер программного стека. Подобные специальные команды (метадирективы) не преобразуются в ассемблерный код.

Поскольку семейство микроконтроллеров AVR хранит данные и код в разных областях памяти, то при работе с программой FastAVR разработчикам необходимо указывать, в каком месте памяти будут размещаться данные. Код программы компилятор располагает автоматически.

Программа FastAVR была создана Bojan Ivancic из Словении и является продуктом компании MicroDESIGN. К сожалению, автор забросил свой проект, его сайт не работает, а телефоны поддержки не отвечают. Само приложение давно не обновляется и, как следствие, компилятор не поддерживает последние модели контроллеров Atmel.

Программа FastAVR являлась платной. Без ввода регистрационного кода среда разработки запускается только в демонстрационном режиме, имеющем существенные ограничения. В настоящее время приложение можно скачать по ссылке ниже. Представленная сборка включает в себя последнюю работоспособную версию программы, файлы справки на английском языке, примеры.

Данный продукт был написан на английском языке. Русификатора к нему не имеется.

FastAVR работает под Microsoft Windows. Приложение корректно фунуционирует в операционных системах 98SE, NT4, 2000 и XP.

Универсальная отладочная плата FastAVR для начинающих в программировании МК ATMEL разработана на основе анализа около десятка подобных конструкций. Плата представляет собой разумный компромисс между избыточной функциональностью большинства из них или слишком примитивных возможностей других. Имея некоторый опыт в работе с разными микропроцессорными системами, ниже я буду комментировать свои мысли,- как был задуман тот или иной узел платы. Соглашаться с ними или нет - ваше дело, но может быть частично они будут полезны осваивающим AVR в дальнейшем...

В основу конструкции легли разработки и аппноуты Микроэлектроники (http://www.mikroe.com/ru/). Но платы EasyAVR (да и не только) содержат слишком много компонентов, которые привлекают пестротой и качеством изготовления новичков в микропроцессорной технике, на самом деле половина из них становится ненужной после удачной компиляции 5-6 примеров программ и получения опыта. Посудите сами- зачем вам на плате куча светодиодов и кнопок подключенных на каждый порт? Все это актуально пока вы не научитесь управлять пинами порта и помигать индикаторами, а это произойдет весьма быстро;-) На этот случай на плате имеются 4 светодиода и переключатель, для начала вполне достаточно...

Итак, возможности отладочной платы:

  • основной набор периферии для поддержки ATmega: RS-232 конвертер, бипер, SPI EEPROM, LCD и LED-индикаторы, встроенный тактовый генератор + кварц, клавиатура PS-2, ADC тестер, логические тестеры;
  • возможность повторения в домашних условиях, односторонняя печатная плата оптимизированная под лазерно-утюжную технологию, небольшие размеры;
  • применение всех компонентов только в DIP корпусах- позволяет легко заменять их в процессе экспериментов либо запрограммировать сам процессор для других схем (например для JTAG);
  • полная функциональная достаточность для создания несложных прототипов устройств и их отладка;
  • разъем стандартного SPI программатора STK-200 с селективной подачей питания на программатор, возможность внешнего подключения JTAG;
  • возможность включения платы в режиме JTAG ICE простой перекоммутацией;
  • возможность независимой коммутации набортной периферии в любых сочетаниях благодаря линейной технологии расположения всех портов МК;
  • возможность легкого подключения любой внешней периферии и использования на 100% ресурсов ATmega в DIP-40, все порты поразрядно доступны, более того - вся внутренняя периферия платы позволяет использовать ее для внешних устройств (например тактовый генератор или LED индикаторы;

Все это не требует доработок платы или пайки. Т.о. на начальном этапе освоения МК возможностей 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. Через них достаточно просто при подключении периферии снимать питающее напряжение и общую "землю".

Внешняя память реализована на стандартной I2C EEPROM 24cXXX. Хотя сам AVR содержит собственную энергонезависимую память, однако во многих конструкциях внешний чип может быть предпочтительней из-за объема либо ресурса. Схема включения стандартная, адрес кристалла 0x01.

Линейные LED индикаторы состояния портов HL2-HL5 выполнены на 4-х дискретных светодиодах. Для начала экспериментов с AVR этого достаточно, большее их количество считаю не оправданным и скорее украшательством. Светодиоды включаются при записи в порт лог."1", т.о. состояние порта отображается без инверсии сигнала, что удобно и наглядно.

Подключение к плате индикатора LCD сделано через 2 разъема, возможно использовать как 8-ми битный так и 4-х битный режим. Первый из них - 34-х пиновый Х2 (от 3,5" дисковода) позволяет использовать стандартные перепрессованные шлейфы от дисководов нужной длинны, соответственно на самом индикаторе лучше распаять штыревую джамперную линейку (пин-блок), это позволяет быстро менять разные индикаторы без боязни перепутать выводы. Подключение к портам авра осуществляется через пин-блок Х10, т.о. помимо самого режима подключения LCD можно гибко выбрать выводы МК. Такая конструкция позволяет легко адаптироваться к свободным портам контроллера, даже "набрать" их по-одному из разных групп портов, что бывает необходимо при соответствии конкретному отлаживаемому прототипу или вновь конструируемая печатная плата получается от этого удобнее в разводке.


Во многих случаях применение ЖК-индикатора может быть не оправдано по цене, габаритам либо надежности. Например, в простейшем зарядном устройстве или таймере вполне может потрудиться и 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.

А вот так выглядит интерфейс для проверялки ТТЛ/КМОП логики, по мере возможностей я постараюсь рассказать, что из этого получилось.

Поделитесь с друзьями или сохраните для себя:

Загрузка...