AVR-контроллеры:
развитие семейства. Часть 1
Николай КОРОЛЕВ
С момента начала выпуска в 1998 году микроконтроллеры семейства AVR прошли путь от экзотической новинки до одного из самых популярных семейств на рынке 8-разрядных микроконтроллеров с Flash-памятью на кристалле. Причина популярности — очень удачная архитектура кристалла, недорогие средства отладки, а также достаточно удобная, причем бесплатная, среда программирования AVR Studio. Сегодня микроконтроллеры ATmega и ATtiny можно встретить в самых разнообразных устройствах, начиная от игрушек и заканчивая серьезными промышленными системами.
Объем
памяти,
байт
16К 8 К 4 К
2 К
1 К
512
ATtinylO
ATtiny9
ATtiny5
i ATtiny4
ATtiny45 ATtiny44A
ATtiny 13А
ATtiny20
ATtiny167
ATtiny861A I ATtiny87
ATtiny461A ATtiny43U
ATtiny40
[ ATtii
ATtiny4313
ATtiny24A ATtiny261A
ATtiny2313A
Выпуск в 2010
В разработке
14
20
28/32 Числ°
ВЫВОДОВ
Рис. 1. Микроконтроллеры серии ATtiny
Развивая успех, норвежское отделение компании Atmel начало освоение 32-разрядного рыночного сегмента, выпустив микросхемы на базе собственного ядра AVR32. Одной из особенностей этих микроконтроллеров является набор команд, включающий как стандартные «контроллерные» инструкции, так и специфические DSP-команды. Такой комплексный набор команд в совокупности с высокоскоростной периферией резко расширяет область применения AVR32-микроконтроллеров.
Неудивительно, что на прошедшем в середине марта дистрибьюторском техническом семинаре компании Atmel много времени было уделено новым представителям микроконтроллеров на архитектуре AVR32. Программа семинара была разнообразной и насыщенной. Помимо знакомства с новейшими представителями семейств 8-разрядных AVR и AVR32, специалисты Atmel рассказали о микросхемах, построенных на ядре AVR/AVR32, оснащенных специализированной периферией, например, трансивером ZigBee или аппаратной поддержкой работы с емкостными датчиками, позволяющими реализовать сенсорную клавиатуру с высокой помехозащищенностью. В статье дается тематический обзор новинок, представленных на семинаре.
Классические 8-разрядные AVR-контроллеры
На рис. 1 представлено полное семейство ATtiny. Кристаллы в рамках на белом фоне уже доступны для заказа, а кристаллы в рамках, что расположены на рисунке на зеленом фоне, будут выпущены к концу 2010 года. По оси абсцисс микросхемы размещены в соответствии с числом выводов корпуса, а по оси ординат — в соответствии с объемом Flash-памяти.
В семействе tiny появились контроллеры в 6-выводных корпусах. Тип корпуса — стан-
дартный SOT-23 или компактный корпус UDFN с размерами 2х2х0,5 мм. Микросхемы АТСпу4 и АТСпу5 имеют объем Flash-памяти 512 байт, а АТ!пу9 и АТСпуШ — соответственно 1 кбайт.
Что удивительно, при столь малом числе выводов они имеют весьма насыщенную периферию, например, все эти контроллеры содержат аналоговый компаратор, таймер, модуль ШИМ. АТйпу5 и АТСпуШ также оснащены 4-канальным 8-разрядным АЦП. Микросхемы позиционируются как самые быстрые (производительность до 12 МТО) и самые экономичные 6-выводные микроконтроллеры в отрасли. В таблице 1 приведены основные характеристики этих контроллеров. Судя по данным таблицы ясно, что в целях снижения стои-
мости и потребляемой мощности из новых 6-выводных контроллеров исключена память типа EEPROM и память типа SRAM.
Таблица 1. Основные характеристики 6-выводных ATtiny
Характеристики tiny4 tiny5 tiny9 tiny10
Flash, байт 512 512 1024 1024
ОЗУ, байт 32 32 32 32
АЦП Нет 4 канала 8-битных Нет 4 канала 8-битных
Аналоговый компаратор 1 1 1 1
Таймер 1x16- битный 1x16- битный 1x16- битный 1x16- битный
ШИМ, каналов 2 2 2 2
picoPower Да Да Да Да
Входы/выходы 4 4 4 4
Таблица 2. Основные характеристики 20-выводных ATtiny
Характеристики tiny2313A tiny4313 tiny20 tiny40 tiny43U
Flash, кбайт 2 4 2 4 4
SRAM, байт 128 256 128 256 256
EEPROM, байт 128 256 Нет Нет 64
Компаратор 1 1 1 1 1
АЦП Нет Нет 8 каналов 10-битных 12 каналов 10-битных 4 канала 10-битных
Таймеры 1х8-битный 1х16-битный 1х8-битный 1х16-битный 1х8-битный 1х16-битный 1х8-битный 1х8/16-битный 2х8-битный
ШИМ, каналы 4 4 4 2 4
SPI Есть Есть Master/Slave Master/Slave Есть
I2C Есть (USI) Есть (USI) H/W Slave H/W Slave USI
USART Да Есть Нет Нет Есть
Входы/выходы 18 18 12 18 16
Корпус PDIP/SOIC VQFN PDIP/SOIC VQFN 20 pad 3х3 VQFN 15 ball 3х3 UFBGA 20 pad 3х3 VQFN SOIC
QFN/MLF
Питание, В 1,8—5,5 1,8—5,5 1,8—5,5 1,8—5,5 0,7-1,8 1,8-5,5
В семействе mega выпускаются контроллеры ATmega1284P (большая память в корпусе с 40/44 выводами), ATmega16M1/64M1 (интерфейсы CAN/LIN и 10-разрядный ЦАП), ATmega64xxP (микромощное потребление). В семейство mega входят и контроллеры с интерфейсом USB, причем наряду с ATmega8U/16U/32U сюда также относятся микросхемы AT90USB64x/128x. USB-контроллеры разбиты на 4 серии, и для каждой серии выпущен свой программный пакет (Software Package). Разбиение на серии представлено на рис. 2.
Контроллеры AVR Xmega
Объем
памяти,
кбайт
128
64
32
16
AT90USB1286 AT90USB1287
AT90USB646 AT90USB647
Серия 2 32 вывода DEVICE
Серия 4 44 вывода DEVICE
Серия 6 64 вывода DEVICE
Серия 7 64 вывода OTG
Рис. 2. AVR-микроконтроллеры с интерфейсом USB
ATtiny87 и ATtiny167 разработаны для автомобильных приложений. Они оснащены 11-канальным 8-разрядным АЦП с программируемым входным усилителем и интерфейсом LIN 2.1. Контроллер ATtiny167 — это первый представитель семейства tiny, имеющий «на борту» 16 кбайт Flash-памяти.
Контроллеры ATtiny2313A и ATtiny4313 совместимы по выводам с известным кристаллом ATtiny2313 и отличаются улучшенными параметрами по энергопотреблению, а ATtiny4313 — еще и большим объемом памяти.
Микросхемы ATtiny20 и ATtiny40 выпускаются в одинаковых 20-выводных корпусах типа VQFN размером 3x3 мм, однако кристалл ATtiny20 имеет 12 входов/выходов, а ATtiny40 — 18 входов/выходов. Микросхема ATtiny20 будет выпускаться также в 15-выводном корпусе UFBGA.
Очень интересным представителем семейства tiny является ATtiny43U. Его особенность — наличие встроенного повышающего преобразователя напряжения, обеспечивающего работу микроконтроллера от напряжения 0,7 В, то есть он может работать даже от разряженной пальчиковой батарейки! При этом мощности преобразователя хватит для питания
внешней нагрузки током до 30 мА. Основные характеристики 20-выводных контроллеров приведены в таблице 2.
В отличие от контроллеров семейства mega, которые в силу исторических причин имеют некое рассогласование в наименовании того или иного кристалла, в семействе Xmega наблюдается строгая иерархия в названиях микросхем. Помимо того, что прямо в названии микросхемы явно указан объем Flash-памяти, можно однозначно сказать, что микросхемы, название которых оканчивается на цифру 1, выпускаются в 100-выводном корпусе, а микросхемы, оканчивающиеся на цифру 3 и 4, — соответственно, в 64- и 44-выводном корпусе. Аналогично суффикс “А” в названии указывает на «максимальную комплектацию» кристалла, а суффикс “D” обозначает «бюджетную» конфигурацию: отсутствует DMA-контроллер и ЦАП, а производительность АЦП снижена с 2 Msps до 200 ksps. Таким образом, если в конкретном приложении не используется ЦАП и не нужен высокоскоростной АЦП, то можно применить более дешевый кристалл и попутно немного снизить потребляемую мощность устройства. Ввиду образцовой классификации микросхем всю информацию о новых представителях семей-
Объем
памяти,
кбайт
384
256
192
128
64
32
16
ХМEGAА
DMA, Event System,
Crypto 2 Msps ADC, 1 Msps DAC, AC US ART, TWI, SPI, 16-bit T/C
XMEGA D
Event System 200 ksps ADC, AC USART, TWI, SPI, 16-bit T/C
384A1
1 256АЗ і 256А1 I 256D3
256АЗВ j
1 192 A3 I 192А1 j I I 192D3
I
128A3 128A1
6 4 A3 64A1
128D4
В производстве
В разработке
44
64 100
64 100 Число в
Рис. 3. AVR-микроконтроллеры семейства Xmega
Таблица 3. Сравнительные характеристики ATmega128RFA и отдельных трансиверов
ISM Band Max Bit Rate Max RX Sens, дБм TX PWR, дБм Vcc Range, В Package
ATmega128RFA1 2,4 ГГц 2 Мбит/с -100 -17... +3,5 1,8-3,6 QFN64
AT86RF230 2,4 ГГц 250 кбит/с -101 -17... +3 1,8-3,6 QFN32
AT86RF231 2,4 ГГц 2 Мбит/с -101 -17. +3 1,8-3,6 QFN32
AT86RF212 700 МГц 800 МГц 900 МГц 1 Мбит/с -110 -11. +10 1,8-3,6 QFN32
Рис. 5. Отладочная плата AS-xmega
ства Xmega можно получить непосредственно из рис. 3.
Для микросхем ATxmega компания Atmel выпустила стартовые платы Xplain. На плате установлен основной контроллер ATXmega128A1, дополнительный AT90USB1287, память SDRAM объемом 8 Мбайт, кнопки, светодиоды и разъемы для подключения эмулятора и дополнительной периферии. Внешний вид платы приведен на рис. 4.
Если для отладки требуется ЖКИ-дисплей или гальваноразвязанный интерфейс USB, тогда удобнее использовать плату AS-xmega российского производства. На этой плате нет микросхемы SDRAM, но есть установочные места для микросхем памяти с интерфейсами I2C (серия AT24) и SPI (серия AT25 и AT45). Также на плате установлен стандартный разъем для порта RS-232 и трехконтактный винтовой разъем интерфейса RS-485. Внешний вид платы приведен на рис. 5.
ATmega128RFA1 — интеллектуальный трансивер ZibBee
Одно из интересных направлений, которые развивает компания Atmel,—радиоинтерфейс ZigBee. Компания предлагает несколько типов трансиверов для этого интерфейса, а также программную поддержку на уровне библиотек для AVR-контроллеров. Заказчикам поставлялся комплект из двух микросхем, собственно трансивер и контроллер ATmega1281. Как вариант, можно заказать готовые модули серии ZigBit, в которых установлены микросхемы ATmega1281, AT86RF230 (AT86RF212),
а также необходимая внешняя обвязка. В 2010 году Atmel начала выпуск однокристального контроллера-трансивера на базе ядра ATmega128 с увеличенным объемом ОЗУ, причем на том же кристалле размещен трансивер, функционально аналогичный микросхеме AT86RF231 (табл. 3).
Кристалл изготовлен по технологии 0,15 микрон, что позволило получить прибор с хорошими параметрами как в части контроллера (производительность 16 MIPS при напряжении питания 1,8 В, объем ОЗУ 16 кбайт), так и в части трансивера (скорость передачи до 2 Мбит/с, чувствительность -100 дБм, выходная мощность —17__+3,5 дБм), и это при
умеренных токах потребления — 12,5 мА в режиме приема и 14,5 мА в режиме передачи. На кристалле также есть аппаратный криптомодуль, поддерживающий кодирование «на лету» по стандарту AES со 128-битным ключом.
Atmel разработала и выложила на сайт комплект библиотек с ZigBee стеком для различных приложений. Этот сертифицированный полнофункциональный программный стек второго поколения называется BitCloud ZigBee, и он может применяться для разработки надежных, масштабируемых приложений с защищенным беспроводным обменом. На рис. 6 представлены требуемые объемы памяти для размещения той или иной конфигурации стека.
Подробную информацию можно получить на странице [7], и оттуда же можно загрузить бесплатные библиотеки.
Область применения ATmega128RFA1 очень широка, стоит упомянуть лишь развивающийся рынок пультов дистанционного
Объем памяти, кбайт
120
100
управления различными бытовыми приборами по стандарту RF4CE (RF for Consumer Electronics — радиоинтерфейс для бытовой электроники). Стандарт RF4CE, так же как и ZigBee, базируется на спецификациях IEEE 802.15.4. Изначально спецификации были определены RF4CE-консорциумом, в настоящее время поддержкой и развитием этого стандарта занимается ZigBee Alliance, в состав которого входит компания Atmel. Дополнительную информацию о стандарте RF4CE и бесплатное программное обеспечение можно получить на сайте [8].
Стандарт RF4CE будет применяться в системах управления различными электронными устройствами, которые, как предполагается, придут на смену существующим инфракрасным пультам дистанционного управления. Новые пульты предоставят большую гибкость в управлении техникой, потому что отпадет необходимость в обеспечении прямой видимости между передатчиком и приемником, а значит, можно будет, например, из комнаты переключить канал на ресивере цифрового телевидения, расположенного за шкафом в прихожей, или включить кондиционер в спальне. Учитывая, что такой пульт может не только передавать данные, но и принимать их, можно реализовать принципиально новые функции, например, проверить с пульта, закрыта ли входная дверь в квартиру. Попутно появляется возможность по радиоканалу обновлять версию прошивки такого «интеллектуального» пульта, и при покупке нового аудиоцентра добавлять в пульт программу управления этим аудиоцентром.
Для разработки и тестирования приложений с применением ATmega128RFA1 ком-
Рис. 7. Отладочная плата, входящая в комплект ATmega128RFA1-EK1
пания Atmel предлагает различные отладочные комплекты. Комплект ATmega128RFA1-EK1 содержит две идентичные платы с распаянной микросхемой ATmega128RFA1 и антенной, подключаемой к разъему типа SMA. Эти платы разработаны для установки на базовую плату STK600, однако, если на них подать внешнее питание, платы могут работать в автономном режиме. Внешний вид платы из комплекта ATmega128RFA1-EK1 представлен на рис. 7.
Еще один отладочный комплект, AVR RZ600, предназначен для работы совместно с персональным компьютером и подключается к нему через интерфейс USB.
Состав комплекта AVR RZ600:
• 2 платы с AT86RF230;
• 2 платы с AT86RF231;
• 2 платы с AT86RF212;
• 2 платы USB-интерфейса (UC3A3256);
• 2 антенны на диапазон 2,4 ГГц;
• 2 антенны на диапазон 700-800 МГц. Внешний вид комплекта AVR RZ600 представлен на рис. 8.
Программирование в AVR Studio
Для создания и отладки проектов на AVR-контроллерах, естественно, нужен компилятор и отладчик. Сегодня де-факто сложилась ситуация, что программа пишется на языке Си, хотя для AVR-контроллеров разрабо-
таны компиляторы языков Паскаль, Форт и Бэйсик. Здесь у программиста есть широкий выбор — от бесплатных средств с простым пользовательским интерфейсом до высокобюджетных профессиональных програмных пакетов фирмы IAR. В начальном ценовом диапазоне расположились Си-компиляторы ICC AVR и CodeVisionAVR. Однако в подавляющем большинстве случаев используется бесплатный пакет AVR Studio. С одной стороны, этот пакет поддерживается фирмой-производителем AVR-контроллеров, которая выпускает регулярные обновления, с другой стороны, в пакет легко интегрируется бесплатный компилятор WinAVR (это портирован-ный под Windows AVR-GCC), распространяемый под лицензией GPL. В итоге получается бесплатная полнофункциональная среда разработки приложений на ассемблере и Си, работающая со всем спектром AVR-контроллеров и поддерживающая все аппаратные средства, также предлагаемые компанией Atmel. На начальном этапе освоения пакета очень помогает встроенная подробная help-система, объем файлов в которой превышает 36 Мбайт.
Наверное, все согласятся, что первая программа, с которой программист начинает знакомиться со средой разработки, это мигание светодиодом, подключенным к выводу микроконтроллера — своеобразный “Hello World” в минималистском исполнении. Соблюдая традицию, автор познакомит читателя с пакетом AVR Studio на примере создания такой программы, правда, более сложной — она будет поочередно мигать двумя светодиодами с задержкой в полсекунды.
Хорошей аппаратной основой для начала работы является плата AS-megaM на базе контроллера AT mega103/ATmega128/AT mega128A, которая выпускается уже более 10 лет, претерпевая время от времени необходимые модернизации. Плата имеет разъем для непосредственного подключения цифробуквенного ЖКИ-дисплея и возможность установки разъема второго порта RS-232. Текущая версия платы, 1.4, отличается добавлением драйвера интерфейса RS-485 (микросхема типа ADM485) и возможностью установки
Рис. 9. Плата AS-megaM
на плату микросхемы Flash-памяти с интерфейсом SPI серии AT25. Внешний вид платы AS-megaM представлен на рис. 9.
Итак, после инсталляции на компьютер компилятора WinAVR, устанавливается собственно пакет AVR Studio, который «увидит» установленный компилятор и автоматически пропишет пути к папке с WinAVR. При запуске пакета AVR Studio будет выдано первое окно с приглашением создать новый проект; здесь нужно выбрать тип компилятора, а также дать название проекту и указать место на диске, куда предварительно положены файлы led.c и asmegam.h, и где будут размещены файлы проекта (рис. 10).
После нажатия кнопки Next выдается следующее окно, где происходит выбор отладочной платформы и программируемой микросхемы. Здесь нужно отметить микросхему ATmega128 и отладчик AVR Simulator. После нажатия конпки Finish открывается основное окно проекта, где отображается файл с исходным кодом, который для рассматриваемого примера состоит из нескольких строк (рис. 11).
Как видно на рис. 11, исходный код отображается по умолчанию в центральной части окна. В левой части основного окна расположены папки с рабочими файлами, используемыми при компиляции. Здесь нужно в папку Header Files добавить заголовочный файл asmegam.h. Справа от исходного кода
Рис. 8. Отладочный комплект AVR RZ600 Рис. 10. Начальное окно создания проекта
Рис. 11. Основное окно AVR Studio
Рис. 12. Окно AVR Studio в режиме симуляции проекта
расположено окно, где представлен перечень периферийных модулей, имеющийся на кристалле контроллера ATmega128. Внизу экрана находится окно сообщений, из которого можно узнать, что при инициализации проекта были подгружены два плагина, STK500 и AVR GCC, а также файл описания микросхемы ATmega128.xml. Проект загрузился без ошибок, поэтому можно нажатием клавиши F7 запустить построение проекта, и после завершения процесса по комбинации клавиш Ctrl+Shift+Alt+F5 войти в режим отладки проекта в симуляторе (рис. 12).
В режиме отладки слева от исходного текста отображается служебная информация, а справа — текущее состояние регистров порта D, к выходам которого подключены светодиоды. Теперь доступны стандартные отладочные процедуры — установка и снятие точек останова, пошаговое выполнение команд, наблюдение за текущим состоянием регистров и т. д.
Если при инициализации проекта вместо симулятора выбрать, например, внутрисхемный эмулятор JTAG ICE mkII, то можно производить реальную отладку проекта непосредственно на плате, где распаян AVR-микроконтроллер.
В результате успешной компиляции создается файл прошивки микросхемы с расширением .HEX, который можно загрузить во Flash-память микросхемы. Загрузка памяти осуществляется многими способами, например при помощи эмулятора JTAG ICE mkII или какого-либо программатора. В ряде случаев удобно использовать внутрисхемный программатор AS-4. Этот программатор может работать как из среды AVR Studio, так и со своей программной оболочкой ASISP, которая запускается под Windows XP/Windows 7 и не требует инсталляции. Пример рабочего окна программы ASISP приведен на рис. 13.
Удобство работы с такой программой состоит в том, что содержимое Flash-памяти и EEPROM-памяти контроллера непосред-
ственно отображается в окне и доступно для редактирования. Это позволяет в некоторых случаях упростить отладку программы, если под рукой нет эмулятора. Например, можно организовать в программе условный переход по определенному биту в памяти EEPROM. При этом, вручную изменяя состояния этого бита, можно управлять ходом выполнения программы без перекомпиляции проекта.
Исходный код описанной выше программы можно найти на странице [9]. Там же есть модификация этой программы, проект led-timer, где полусекундная задержка формируется по прерыванию от внутреннего таймера контроллера ATmega128, который тактируется часовым кварцем. Кроме того, на этой странице есть проект для платы AS-megaM Clock+freq, который иллюстрирует работу с двухстрочным ЖКИ-дисплеем, использование таймера для прецизионного измерения частоты системного кварца, прием сигналов нажатия кнопок и работу с портом UART.
Во второй части статьи будут рассмотрены новые контроллеры семейств AVR32, а так-
же микросхемы с аппаратной поддержкой
сенсорных емкостных датчиков касания
и движения. ■
Литература
1. Материалы технического семинара Atmel. Норвегия, март 2010 г.
2. Королев Н. Atmel: 32-разрядные Flash-микроконтроллеры на ядре AVR32 // Компоненты и технологии. 2008. № 11.
3. Королев Н. Atmel: микроконтроллеры для автопрома // Компоненты и технологии. 2008. № 7.
4. Королев Н., Шабынин А. Архитектура AVR: развитие вширь и вглубь. Часть 1 // Компоненты и технологии. 2007. № 2.
5. Королев Н., Шабынин А. Архитектура AVR: развитие вширь и вглубь. Часть 2 // Компоненты и технологии. 2007. № 4.
6. Королев Н., Королев Д. AVR: программирование в среде AVR Studio // Компоненты и технологии. 2004. № 3.
7. www.atmel.com/bitcloud
8. www.atmel.com/RF4CE
9. www.as-kit.ru/firmware/AVR/AS-megaM
Рис. 13. Основное окно программы ASISP