Читайте также: |
|
Универсальная отладочная плата для микропроцессоров семейства AVR
Архитектура микроконтроллеров семейства AVR
К началу 1990-х широко распространенное семейство микроконтроллеров MCS51, выпускаемое целым рядом фирм-производителей (Intel, Philips, Temic, OKI, Siemens и др.), уже являлось промышленным стандартом для 8-разрядных систем и прекрасно подходило для использования в широком классе задач, особенно если выбирались кристаллы с дополнительными встроенными периферийными устройствами и повышенной тактовой частотой. Конечно, была и оборотная сторона медали - значительное удельное энергопотребление этих микроконтроллеров.
Окончательный выбор разработчиком той или иной микропроцессорной платформы для реализации своей задачи зависит, естественно, от большого числа разнообразных факторов, включая экономические. Но обычно первостепенным условием остается получение максимально выгодного соотношения "цена - производительность - энергопотребление", определяемого сложностью решаемой задачи. Видимо, это обстоятельство и послужило толчком к разработке в середине 1990-х нового 8-разрядного микроконтроллера.
AVR, пожалуй, одно из самых интересных направлений, развиваемых корпорацией Atmel. Они представляют собой мощный инструмент для создания современных высокопроизводительных и экономичных многоцелевых контроллеров. На настоящий момент соотношение "цена - производительность - энергопотребление" для AVR является одним из лучших на мировом рынке 8-разрядных микроконтроллеров.
Области применения AVR многогранны. Для семейства "tiny" - это интеллектуальные автомобильные датчики различного назначения, игрушки, игровые приставки, материнские платы персональных компьютеров, контроллеры защиты доступа в мобильных телефонах, зарядные устройства, детекторы дыма и пламени, бытовая техника, разнообразные инфракрасные пульты дистанционного управления. Для семейства "classic" - это модемы различных типов, современные зарядные устройства, изделия класса Smart Cards и устройства чтения для них, спутниковые навигационные системы для определения местоположения автомобилей на трассе, сложная бытовая техника, пульты дистанционного управления, сетевые карты, материнские платы компьютеров, сотовые телефоны нового поколения а также различные и разнообразные промышленные системы контроля и управления. Для "mega" AVR - это аналоговые (NMT, ETACS, AMPS) и цифровые (GSM, CDMA) мобильные телефоны, принтеры и ключевые контроллеры для них, контроллеры аппаратов факсимильной связи и ксероксов, контроллеры современных дисковых накопителей, CD-ROM и т.д.
Улучшенная RISC (enhanced RISC) архитектура AVR-микроконтроллеров (рис. 1) объединяет в себе комплекс решений, направленных на повышение быстродействия микропроцессорного ядра AVR.
Арифметико-логическое устройство (ALU), в котором выполняются все вычислительные операции, имеет доступ к 32-м оперативным регистрам, объединенным в регистровый файл. Выборка содержимого регистров, выполнение операции и запись результата обратно в регистровый файл выполняются за один машинный цикл. Для сравнения полезно вспомнить, что большинство встраиваемых микроконтроллеров имеют только один такой регистр, непосредственно доступный ALU, - аккумулятор, что требует включения в программу дополнительных команд его загрузки и считывания.
Рис. 1: Архитектура AVR-микроконтроллеров.
Основной идеей всех RISC (Reduced Instruction Set Computer), является увеличение быстродействия за счет сокращения количества операций обмена с памятью программ. Для этого каждую команду стремятся уместить в одну ячейку памяти программ. При ограниченной разрядности ячейки памяти это неизбежно приводит к сокращению набора команд микропроцессора.
У AVR-микроконтроллеров в соответствии с этим принципом практически все команды (исключая те, у которых одним из операндов является 16-разрядный адрес) также упакованы в одну ячейку памяти программ. Но сделать это удалось не за счет сокращения количества команд процессора, а путем расширения ячейки памяти программ до 16 разрядов. Такое решение является причиной богатства системы команд AVR по сравнению с другими RISC-микроконтроллерами.
Организация памяти AVR выполнена по схеме Гарвардского типа, в которой разделены не только адресные пространства памяти программ и памяти данных, но также и шины доступа к ним.
Вся программная память AVR-микроконтроллеров выполнена по технологии FLASH и размещена на кристалле. Она представляет собой последовательность 16-разрядных ячеек и имеет емкость от 512 слов до 64K слов в зависимости от типа кристалла.
Во FLASH-память, кроме программы, могут быть записаны постоянные данные, которые не изменяются во время функционирования микропроцессорной системы. Это различные константы, таблицы знакогенераторов, таблицы линеаризации датчиков и т. п.
Достоинством технологии FLASH является высокая степень упаковки, а недостатком то, что она не позволяет стирать отдельные ячейки. Поэтому всегда выполняется полная очистка всей памяти программ. При этом для AVR гарантируется, как минимум, 1000 циклов перезаписи FLASH-памяти.
Кроме того, для хранения данных AVR-микроконтроллеры могут иметь, в зависимости от типа кристалла, внутреннюю (от 0 до 4K байт) и внешнюю (от 0 до 64 Кбайт) оперативную SRAM память и энергонезависимую внутреннюю EEPROM память (от 0 до 4K байт).
Разделение шин доступа (рис. 1) к FLASH памяти и SRAM памяти дает возможность иметь шины данных для памяти данных и памяти программ различной разрядности а также использовать технологию конвейеризации. Конвейеризация заключается в том, что во время исполнения текущей команды программный код следующей уже выбирается из памяти и дешифрируется.
Вся программная память AVR-микроконтроллеров выполнена по технологии FLASH и размещена на кристалле. Она представляет собой последовательность 16-разрядных ячеек и имеет емкость от 512 слов до 64K слов в зависимости от типа кристалла.
Во FLASH-память, кроме программы, могут быть записаны постоянные данные, которые не изменяются во время функционирования микропроцессорной системы. Это различные константы, таблицы знакогенераторов, таблицы линеаризации датчиков и т. п.
Достоинством технологии FLASH является высокая степень упаковки, а недостатком то, что она не позволяет стирать отдельные ячейки. Поэтому всегда выполняется полная очистка всей памяти программ. При этом для AVR гарантируется, как минимум, 1000 циклов перезаписи FLASH-памяти.
Кроме того, для хранения данных AVR-микроконтроллеры могут иметь, в зависимости от типа кристалла, внутреннюю (от 0 до 4K байт) и внешнюю (от 0 до 64 Кбайт) оперативную SRAM память и энергонезависимую внутреннюю EEPROM память (от 0 до 4K байт).
Разделение шин доступа (рис. 1) к FLASH памяти и SRAM памяти дает возможность иметь шины данных для памяти данных и памяти программ различной разрядности а также использовать технологию конвейеризации. Конвейеризация заключается в том, что во время исполнения текущей команды программный код следующей уже выбирается из памяти и дешифрируется.
Для сравнения вспомним, что у микроконтроллеров семейства MCS-51 выборка кода команды и ее исполнение осуществляются последовательно, что занимает один машинный цикл, который длится 12 периодов кварцевого резонатора.
В случае использования конвейера приведенную длительность машинного цикла можно сократить. Длительность машинного цикла AVR составляет один период кварцевого резонатора. Таким образом, AVR способны обеспечивать заданную производительность при более низкой тактовой частоте. Именно эта особенность архитектуры и позволяет AVR-микроконтроллерам иметь наилучшее соотношение энергопотребление/производительность, так как потребление КМОП микросхем, как известно, определяется их рабочей частотой.
EEPROM блок электрически стираемой памяти AVR предназначен для хранения энергонезависимых данных, которые могут изменяться непосредственно на объекте. Это калибровочные коэффициенты, различные уставки, конфигурационные параметры системы. EEPROM-память имеет меньшую, по сравнению с FLASH, емкость (до 4К байт), но при этом допускает возможность побайтной перезаписи ячеек, которая может происходить как под управлением внешнего процессора, так и под управлением собственно AVR-микроконтроллера во время его работы по программе.
Программирование энергонезависимых блоков памяти AVR может осуществляться как параллельно, так и последовательно через SPI (Serial Peripheral Interface) интерфейс.
Управление и обмен данными с EEPROM-памятью и со всеми периферийными узлами осуществляется при помощи регистров ввода/вывода, которые имеются в каждом периферийном узле.
Внутренний тактовый генератор AVR может запускаться от нескольких источников опорной частоты (внешний генератор, внешний кварцевый резонатор, внутренняя или внешняя RC-цепочка). Поскольку AVR-микроконтроллеры полностью статические, минимальная допустимая частота ничем не ограничена (вплоть до пошагового режима). Максимальная рабочая частота определяется конкретным типом микроконтроллера. Верхние границы частотного диапазона гарантируют устойчивую работу микроконтроллеров при работе во всем температурном диапазоне.
Сторожевой (WATCHDOG) таймер предназначен для защиты микроконтроллера от сбоев в процессе работы. Он имеет свой собственный RC-генератор, работающий на частоте 1 МГц. Эта частота является приближенной и зависит прежде всего от величины напряжения питания микроконтроллера и от температуры. WATCHDOG-таймер снабжен своим собственным предделителем входной частоты с программируемым коэффициентом деления, что позволяет подстраивать временной интервал переполнения таймера и сброса микроконтроллера. WATCHDOG-таймер может быть отключен программным образом во время работы микроконтроллера как в активном режиме, так и в любом из режимов пониженного энергопотребления. В последнем случае это приводит к значительному снижению потребляемого тока.
Система реального времени (RTC) реализована во всех микроконтроллерах семейства "mega" и в двух кристаллах семейства "classic". Таймер/счетчик RTC имеет свой собственный предделитель, который может быть программным способом подключен или к основному внутреннему источнику тактовой частоты микроконтроллера, или к дополнительному асинхронному источнику опорной частоты (кварцевый резонатор или внешний синхросигнал). Для этой цели зарезервированы два внешних вывода микроконтроллера. Внутренний осциллятор, нагруженный на счетный вход таймера/счетчика RTC, оптимизирован для работы с внешним "часовым" кварцевым резонатором 32,768 кГц.
Интересная архитектурная особенность построения портов ввода/вывода у AVR заключается в том, что для каждого физического вывода существует 3 бита контроля/управления, а не 2, как у распространенных 8-разрядных микроконтроллеров (Intel, Microchip, Motorola и т.д.). Дело в том, что использование только двух бит контроля/управления порождает ряд проблем при операциях типа "чтение-модификация-запись". Например, если имеют место две последовательные операции "чтение-модификация-запись", то первый результат может быть потерян безвозвратно, если вывод порта работает на емкостную нагрузку и требуется некоторое время для стабилизации уровня сигнала на внешнем выводе микросхемы. Архитектура построения портов ввода/вывода AVR с тремя битами контроля/управления позволяет разработчику полностью контролировать процесс ввода/вывода.
Так же, как и у других встраиваемых микроконтроллеров, система команд АVR включает команды арифметических и логических операций, команды передачи данных, команды, управляющие последовательностью выполнения программы и команды операций с битами.
Выполнять арифметико-логические операции и операции сдвига непосредственно над содержимым ячеек памяти нельзя. Нельзя также записать константу или очистить содержимое ячейки памяти. Система команд AVR позволяет лишь выполнять операции обмена данными между ячейками SRAM и оперативными регистрами. Достоинством системы команд можно считать разнообразные режимы адресации ячеек памяти. Кроме прямой адресации имеются следующие режимы: косвенная, косвенная с пост-инкрементом, косвенная с пре-декрементом и косвенная со смещением.
Поскольку внутренняя и внешняя SRAM входят в единое адресное пространство (вместе с оперативными регистрами и регистрами ввода/вывода), то для доступа к ячейкам внутренней и внешней памяти используются одни и те же команды[4].
Универсальная отладочная плата FastAVR предназначена для ознакомления c устройством и получении первоначальных навыков в программировании микроконтроллеров, фирмы ATMEL. Она разработана на основе анализа около десятка конструкций подобного вида. Плата представляет собой компромисс между избыточной функциональностью большинства из них или слишком примитивных возможностей других.
В основу конструкции легли разработки и аппноуты [1]. Но платы EasyAVR и им подобные, содержат слишком много компонентов, которые привлекают пестротой и качеством изготовления новичков в микропроцессорной технике, на самом деле половина из них становится ненужной после удачной компиляции 5-6 примеров программ и получения опыта.
Основные возможности универсальной отладочной платы:
Все это не требует доработок платы или пайки. Т.о. на начальном этапе освоения МК возможностей предлагаемой универсальной отладочной платы вполне достаточно. Тот, кто задумает двигаться дальше, уже после создания собственного программного обеспечения, сможет самостоятельно решить, что ему нужно конкретно и делать прототип конструкции с собственным набором периферии. Такое решение делает предлагаемую плату максимально универсальной. МК AVR- самодостаточные контроллеры, однако процессор это еще не вся система. "Кубики" обслуживающие его или управляемые им, сами по себе можно рассматривать как отдельные блоки будущих конструкций. Объединив их на основной плате все вместе можно комбинируя получить нужные результаты. В качестве базового микроконтроллера использован контроллер типа Atmega16, Atmega32[3, 5], как наиболее универсальные и доступные по цене. Разводка выводов обоих МК идентична. Себестоимость такого решения сторицей окупается количеством портов ввода-вывода, к которым можно подключиться хотя бы на время отладки. Совместимость снизу-вверх для всех поколений AVR позволяет производить написание и отладку программ используя более мощный чип, а затем произвести компиляцию для целевого кристалла. Достаточный ресурс Flash- памяти позволяет не думать об ограниченности в возможностях перепрограммирования таких контроллеров, тем более что можно достаточно поупражнявшись, отправить микроконтроллер в рабочую конструкцию, прошив его в последний ещё раз.
Большинство компонентов применено от старых либо отказавших материнских плат IBM PC либо другой компьютерной техники, в последнее время такая комплектация стала наиболее доступной.
Рисунок 2 Принципиальная схема универсальной отладочной платы.
Описание универсальной отладочной платы AVR:
Принципиальная электрическая схема универсальной отладочной платы представлена на рис.2
Питание. Встроенный стабилизатор на L7805CV позволяет питать плату от широко распространенных адаптеров 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 24c16X. Хотя сам AVR содержит собственную энергонезависимую память, однако во многих конструкциях внешний чип может быть предпочтительней из-за объема либо ресурса. Схема включения стандартная, адрес кристалла 0x01 [3].
Линейные светодиодные (LED) индикаторы состояния портов HL2-HL5 выполнены на 4-х дискретных светодиодах. Для начала экспериментов с AVR этого достаточно, большее их количество считается не оправданным. Светодиоды включаются при записи в порт лог."1", т.о. состояние порта отображается без инверсии сигнала, что удобно и наглядно.
Подключение к плате монитора LCD сделано через 2 разъема, есть возможность использовать как 8-ми битный, так и 4-х битный режим работы. Первый из них - 34-х пиновый Х2, позволяет использовать стандартные шлейфы от компьютерной переферии нужной длинны, для универсальности использованного индикатора на самом индикаторе можно распаять штыревую джамперную линейку (пин-блок), это позволяет быстро менять разные индикаторы без боязни перепутать выводы. Подключение к портам AVR осуществляется через пин-блок Х10, т.о. помимо самого режима подключения монитора LCD можно гибко выбрать выводы МК. Такая конструкция позволяет легко адаптироваться к свободным портам контроллера, даже "набрать" их по-одному из разных групп портов, что бывает необходимо при соответствии конкретному отлаживаемому прототипу если вновь конструируемая печатная плата, получается от этого удобнее в разводке.
Рис.3. Собранная рабочая платы в момент отладки программы.
В некоторых случаях применение -индикатора может быть не оправдано по цене, габаритам или надежности. Например, в простейшем зарядном устройстве или таймере вполне может работать и 2-х разрядный светодиодный индикатор. Имеющиеся в наличии на плате сдвоенные 7-сегментные индикаторы распространенного типа E20561-G, позволяют использовать их в качестве простейшего индикатора. Индикаторы можно применять как с общим анодом, так и сообщим катодом. В связи с этим применяются 2-х тактные ключи на транзисторах VT1-VT4 для подключения индикаторов любого типа и соответственно панельку под сам индикатор.
Все подключение периферии к портам ATmega, как отмечалось ранее, выполнены через линейные пин-блоки X3-X6. В основном на подобных универсальных платах наблюдаются применение разъемов типа IDC-10 (2х5). Их преимущество - наличие "ключа", дабы не спутать местами шлейф при подключении. На этом достоинства такого способа кончаются и начинаются недостатки: визуально неудобно работать с 8-ми разрядными портами, т.к. выводы их не расположены в ряд, невозможно кроме шлейфа ничем подключать встроенную периферию. Применение пин-блоков дает лучший результат, кроме того- через стандартную перемычку-джампер легко контролировать любые сигналы сверху, например логическим пробником или осциллографом, не боясь случайно коснуться выводов. Максимальная дешевизна и многоразовость данного соединения, значительно проще заменить шлейф или джампер, чем разъем впаянный с плату. Тем более, что сейчас можно найти такие ответные части разъемов (либо использовать от старых системных блоков), что позволяет легко и быстро комбинировать соединители.
Для звука применен распространенный биппер сопротивлением около 80 Ом от материнских плат. Сигнал не очень громкий, но достаточный для контроля. Отдельный ключ для него не использован ставить. Работая со звуком, не стоит забывать в конце процедуры генерации сигнала ставить команду, сбрасывающую в лог."0" вывод PD7, иначе после прекращения генерации там может остаться лог."1" и ток через динамик будет продолжать идти, что приведёт к увеличению общего тока потребления микроконтроллера.
На 4-х разрядном DIP-переключателе SW4 собран задатчик логических сигналов для портов. Здесь ситуация с количеством аналогична LED светодиодам. Т.к. входы микроконтроллеров имеют внутренние подключаемые pool-up сопротивления, то соответственно "подтяжки" к питанию ставить нет нужды. На резисторах R18-R21 собрана защита от ошибок случайного включения портов МК на вывод. На данную универсальную отладочную плату введена резисторная матрица RN1, которая позволяет аппаратно формировать логическую "1" на нескольких входах контроллера.
Тактирование МК выбирается пин-группой 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, но можно использовать и другие аналоги данной микросхемы.
Внешняя матричная клавиатура может быть выполнена на отдельной плате и подключаться шлейфами к МК
Индикатор HL7 установлен для экспериментов со встроенным аппаратным ШИМ-контроллера.
Разъем для внутрисхемного последовательного программирования X7 сделан в соответствии с простейшим программатором типа STK-200. Питание на программатор можно селективно выбирать через JP43. Программатор питается через разъем с отладочной платы и удобен в работе, т.к. буферы в нормальном режиме переходят в Z-состояние и не мешают в работе универсальной отладочной платы. Подключение адаптера JTAG для внутрисхемного программирования и отладки в реальном времени также возможно без доработки платы через соответствующий, линейный пин-блок порта PORTC.
Цепь внешнего сброса (Reset), которая у микроконтроллеров типа AVR достаточно простая, можно отключать через JP42, хотя его эксплуатация совместно с программатором нисколько не мешает. Сам вход сброса, может быть перепрограммирован через фьюз как стандартный порт ввода-вывода, и использован для периферии, однако нужно помнить, что в этом случае уже невозможно будет повторно запрограммировать кристалл через разъём X7.
Подстроечный резистор R27, включенный потенциометром - задаёт напряжения для экспериментов со встроенным АЦП, выход с него может быть подан на любой из аналоговых входов используемого микроконтроллера.
Джамперные линейки разведены с учетом "запретных зон" и применения стандартных 16-ти пиновых шлейфов. При отсутствии ферритовых дросселей (применяемых ранее в старых 286 материнских платах или вышедших из строя мониторов) можно использовать перемычки.
Представленная универсальная плата позволяет не только на начальном уровне наглядно ознакомиться с принципами работы микроконтроллера и основами программирования, но позволяет вести разработку и отладку не сложных коммерческих проектов.
Литература
Интернет-ресурсы:
Дата добавления: 2015-08-13; просмотров: 396 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
УДК 900-999 География и История. Биографии | | | Универсальная термокамера (камера термодымовая КТОМИ-300) |