AVR — это семейство микроконтроллеров , разрабатываемое с 1996 года компанией Atmel , приобретенной Microchip Technology в 2016 году. Это модифицированные 8-битные RISC -микроконтроллеры с архитектурой Harvard. AVR был одним из первых семейств микроконтроллеров, использовавших встроенную флэш-память для хранения программ, в отличие от однократно программируемых ПЗУ , СППЗУ или EEPROM , используемых другими микроконтроллерами в то время.
Микроконтроллеры AVR находят множество применений в качестве встраиваемых систем . Они особенно распространены в любительских и образовательных встраиваемых приложениях, популяризировавшись благодаря их включению во многие линейки открытых аппаратных плат разработки Arduino .
Архитектура AVR была задумана двумя студентами Норвежского технологического института (NTH) [1] Альфом-Эгилем Богеном [2] и Вегардом Волланом. [3]
Atmel утверждает, что название AVR не является аббревиатурой и не обозначает ничего конкретного. Создатели AVR не дают однозначного ответа на вопрос, что означает термин «AVR». [3] Однако общепринято считать, что AVR означает процессор R ISC компании Alf and V egard . [4] Обратите внимание, что использование «AVR» в этой статье обычно относится к 8-битной линейке RISC микроконтроллеров Atmel AVR.
Оригинальный AVR MCU был разработан в местном ASIC- ателье [ требуется разъяснение ] в Тронхейме, Норвегия , которое в то время называлось Nordic VLSI, теперь Nordic Semiconductor , где Боген и Воллан работали студентами. [ требуется ссылка ] Он был известен как μRISC (Micro RISC) [5] и был доступен в виде кремниевого IP/строительного блока от Nordic VLSI. [6] Когда технология была продана Atmel от Nordic VLSI , внутренняя архитектура была дополнительно разработана Богеном и Волланом в Atmel Norway, дочерней компании Atmel. Разработчики тесно сотрудничали с разработчиками компиляторов в IAR Systems , чтобы гарантировать, что набор инструкций AVR обеспечивает эффективную компиляцию языков высокого уровня . [7]
Среди первых в линейке AVR был AT90S8515, который в 40-контактном DIP-корпусе имел ту же распиновку, что и микроконтроллер 8051 , включая внешний мультиплексированный адрес и шину данных. Полярность линии RESET была противоположной (у 8051 активный высокий RESET, а у AVR активный низкий RESET ), но в остальном распиновка была идентичной.
Архитектура 8-битного микроконтроллера AVR была представлена в 1997 году. К 2003 году компания Atmel поставила 500 миллионов флэш-микроконтроллеров AVR. [8] Платформа Arduino , разработанная для простых электронных проектов, была выпущена в 2005 году и включала микроконтроллеры AVR ATmega8.
AVR — это модифицированная машина с архитектурой Гарварда, в которой программа и данные хранятся в отдельных системах физической памяти, которые отображаются в разных адресных пространствах, но имеют возможность считывать элементы данных из памяти программ с помощью специальных инструкций.
АРН обычно классифицируются следующим образом:
tinyAVR – серия ATtiny
Серия ATtiny включает в себя микроконтроллеры в небольших корпусах с ограниченным набором периферийных устройств. Однако улучшенная серия tinyAVR 0/1/2 (выпущенная в 2016 году) включает в себя:
megaAVR – серия ATmega
Серия ATmega включает микроконтроллеры, которые предоставляют расширенный набор инструкций (инструкции по умножению и инструкции для обработки больших программных запоминающих устройств), обширный набор периферийных устройств, солидный объем программной памяти, а также широкий спектр доступных выводов. megaAVR 0-серия (выпущенная в 2016 году) также имеет такие функциональные возможности, как:
AVR Dx – Семейство AVR Dx включает в себя несколько серий микроконтроллеров, ориентированных на HCI , аналоговое преобразование сигналов и функциональную безопасность.
Номера деталей форматируются как AVR ff D xpp , где ff — размер флэш-памяти, x — семейство, а pp — количество контактов. Пример: AVR128DA64 — 64-контактная серия DA с флэш-памятью 128k. Все устройства семейства AVR Dx включают:
XMEGA
Серия ATxmega предлагает широкий спектр периферийных устройств и функций, таких как:
AVR для конкретных приложений
FPSLIC (AVR с FPGA)
32-битные AVR
AVR имеют 32 однобайтовых регистра и классифицируются как 8-битные RISC-устройства.
Flash , EEPROM и SRAM интегрированы в один чип, что устраняет необходимость во внешней памяти в большинстве приложений. Некоторые устройства имеют опцию параллельной внешней шины, позволяющую добавлять дополнительную память данных или отображаемые в память устройства. Почти все устройства (за исключением самых маленьких чипов TinyAVR) имеют последовательные интерфейсы, которые можно использовать для подключения более крупных последовательных EEPROM или чипов флэш-памяти.
Программные инструкции хранятся в энергонезависимой флэш-памяти . Хотя микроконтроллеры 8-битные, каждая инструкция занимает одно или два 16-битных слова. Размер программной памяти обычно указывается в названии самого устройства (например, линейка ATmega64x имеет 64 КБ флэш-памяти, а линейка ATmega32x — 32 КБ). Не предусмотрено никакой внешней программной памяти; весь код, выполняемый ядром AVR, должен находиться во встроенной флэш-памяти. Однако это ограничение не распространяется на микросхемы AT94 FPSLIC AVR/FPGA.
Адресное пространство данных состоит из файла регистров , регистров ввода-вывода и SRAM . Некоторые небольшие модели также отображают ПЗУ программы в адресное пространство данных, но более крупные модели этого не делают.
В вариантах tinyAVR и megaAVR архитектуры AVR рабочие регистры отображаются как первые 32 адреса памяти данных (0000 16 –001F 16 ), за которыми следуют 64 регистра ввода-вывода (0020 16 –005F 16 ). В устройствах со множеством периферийных устройств за этими регистрами следуют 160 регистров «расширенного ввода-вывода», доступных только как отображенный в памяти ввод-вывод (0060 16 –00FF 16 ).
Фактическая SRAM начинается после этих разделов регистров, по адресу 0060 16 или, в устройствах с «расширенным вводом-выводом», по адресу 0100 16 .
Несмотря на то, что для доступа к регистровому файлу и первым 64 регистрам ввода-вывода существуют отдельные схемы адресации и оптимизированные коды операций, ко всем этим данным можно обращаться и манипулировать ими так, как если бы они находились в SRAM.
Самый маленький из вариантов tinyAVR использует сокращенную архитектуру с всего 16 регистрами (r0 по r15 опущены), которые не адресуются как ячейки памяти. Память ввода-вывода начинается с адреса 0000 16 , за которым следует SRAM. Кроме того, эти устройства имеют небольшие отклонения от стандартного набора инструкций AVR. В частности, инструкции прямой загрузки/сохранения (LDS/STS) были сокращены с 2 слов (32 бита) до 1 слова (16 бит), что ограничивает общий объем памяти с прямой адресацией (сумму ввода-вывода и SRAM) до 128 байт. И наоборот, 16-битное адресное пространство инструкции косвенной загрузки (LD) расширено, чтобы также включить энергонезависимую память, такую как Flash и биты конфигурации; поэтому инструкция загрузки программной памяти (LPM) не нужна и опущена. (Подробную информацию см. в разделе Набор инструкций Atmel AVR .)
В варианте XMEGA рабочий файл регистров не отображается в адресное пространство данных; таким образом, невозможно рассматривать любой из рабочих регистров XMEGA так, как если бы они были SRAM. Вместо этого регистры ввода-вывода отображаются в адресное пространство данных, начиная с самого начала адресного пространства. Кроме того, объем адресного пространства данных, выделенного для регистров ввода-вывода, существенно вырос до 4096 байт (0000 16 –0FFF 16 ). Однако, как и в предыдущих поколениях, быстрые инструкции по манипуляции вводом-выводом могут достигать только первых 64 ячеек регистра ввода-вывода (первые 32 ячейки для побитовых инструкций). После регистров ввода-вывода серия XMEGA выделяет 4096-байтовый диапазон адресного пространства данных, который может быть использован опционально для отображения внутренней EEPROM в адресное пространство данных (1000 16 –1FFF 16 ). Фактическая SRAM расположена после этих диапазонов, начиная с 2000 16 .
Каждый порт GPIO на крошечном или большом AVR управляет восемью контактами и управляется тремя 8-битными регистрами: DDR x , PORT x и PIN x , где x — идентификатор порта.
В более новых моделях ATtiny AVR, таких как ATtiny817 и ее собратья, регистры управления портами определены несколько иначе. У xmegaAVR есть дополнительные регистры для конфигураций push/pull, totem-pole и pullup.
Почти все микроконтроллеры AVR имеют внутреннюю EEPROM для полупостоянного хранения данных. Как и флэш-память, EEPROM может сохранять свое содержимое при отключении электропитания.
В большинстве вариантов архитектуры AVR эта внутренняя память EEPROM не отображается в адресуемое пространство памяти MCU. К ней можно получить доступ только так же, как к внешнему периферийному устройству, используя специальные регистры указателей и инструкции чтения/записи, что делает доступ к EEPROM намного медленнее, чем к другой внутренней памяти RAM.
Однако некоторые устройства семейства SecureAVR (AT90SC) [11] используют специальное отображение EEPROM в память данных или программ, в зависимости от конфигурации. Семейство XMEGA также позволяет отображать EEPROM в адресное пространство данных.
Поскольку количество циклов записи в EEPROM ограничено (в технических характеристиках Atmel указано 100 000), хорошо спроектированная процедура записи в EEPROM должна сравнивать содержимое адреса EEPROM с желаемым содержимым и выполнять фактическую запись только в том случае, если содержимое необходимо изменить.
AVR от Atmel имеют двухступенчатую одноуровневую конструкцию конвейера . Это означает, что следующая машинная инструкция извлекается по мере выполнения текущей. Большинство инструкций занимают всего один или два такта, что делает AVR относительно быстрыми среди восьмибитных микроконтроллеров.
Процессоры AVR были разработаны с учетом эффективного выполнения скомпилированного кода C и имеют несколько встроенных указателей для этой задачи.
Набор инструкций AVR более ортогонален , чем у большинства восьмибитных микроконтроллеров, в частности, клонов 8051 и микроконтроллеров PIC, с которыми AVR конкурирует сегодня. Однако он не полностью регулярен:
Кроме того, некоторые различия, специфичные для чипов, влияют на генерацию кода. Указатели кода (включая адреса возврата в стеке) имеют длину два байта на чипах с флэш-памятью до 128 КБ, но три байта на более крупных чипах; не все чипы имеют аппаратные множители; чипы с флэш-памятью более 8 КБ имеют инструкции ветвления и вызова с более длинными диапазонами; и так далее.
В основном регулярный набор инструкций делает компиляторы C (и даже Ada) довольно простыми и эффективными. GCC уже давно включает поддержку AVR, и эта поддержка широко используется. LLVM также имеет элементарную поддержку AVR. Фактически, Atmel запросила вклад от основных разработчиков компиляторов для небольших микроконтроллеров, чтобы определить функции набора инструкций, которые были бы наиболее полезны в компиляторе для языков высокого уровня. [7]
Линейка AVR обычно поддерживает тактовые частоты от 0 до 20 МГц, а некоторые устройства достигают 32 МГц. Работа с низким энергопотреблением обычно требует пониженной тактовой частоты. Все последние (Tiny, Mega и Xmega, но не 90S) AVR оснащены встроенным генератором, что устраняет необходимость во внешних тактовых генераторах или резонаторных схемах. Некоторые AVR также имеют предделитель системных часов, который может делить системные часы до 1024. Этот предделитель может быть перенастроен программным обеспечением во время работы, что позволяет оптимизировать тактовую частоту.
Поскольку все операции (кроме умножения и 16-битного сложения/вычитания) на регистрах R0–R31 являются однотактными, AVR может достигать до 1 MIPS на МГц, т. е. процессор с частотой 8 МГц может достигать до 8 MIPS. Загрузка и сохранение в/из памяти занимает два цикла, ветвление занимает два цикла. Ветвления в последних «3-байтовых ПК» частях, таких как ATmega2560, на один цикл медленнее, чем на предыдущих устройствах.
AVR имеют большую популярность благодаря доступным бесплатным и недорогим инструментам разработки, включая недорогие платы разработки и бесплатное программное обеспечение для разработки. AVR продаются под разными названиями, которые используют одно и то же базовое ядро, но с разными комбинациями периферии и памяти. Совместимость между чипами в каждом семействе довольно хорошая, хотя функции контроллера ввода-вывода могут различаться.
См. внешние ссылки на сайты, посвященные разработке AVR.
АВР предлагают широкий спектр функций:
Существует множество способов загрузки программного кода в микросхему AVR. Методы программирования микросхем AVR различаются в зависимости от семейства микросхем AVR. Большинство описанных ниже методов используют линию RESET для входа в режим программирования. Чтобы избежать случайного входа микросхемы в такой режим, рекомендуется подключить подтягивающий резистор между выводом RESET и положительным источником питания. [16]
Метод программирования внутрисистемного программирования (ISP) функционально выполняется через SPI , плюс некоторое изменение линии сброса. Пока контакты SPI AVR не подключены к чему-либо разрушительному, чип AVR может оставаться припаянным на печатной плате во время перепрограммирования. Все, что нужно, это 6-контактный разъем и адаптер для программирования. Это наиболее распространенный способ разработки с помощью AVR.
Устройство Atmel-ICE или AVRISP mkII (устаревшее устройство) подключается к USB-порту компьютера и выполняет внутрисистемное программирование с использованием программного обеспечения Atmel.
AVRDUDE (AVR Downloader/UploaDEr) работает на Linux , FreeBSD , Windows и Mac OS X и поддерживает множество аппаратных средств для внутрисистемного программирования, включая Atmel AVRISP mkII, Atmel JTAG ICE, старые программаторы Atmel на базе последовательного порта, а также различные сторонние и самодельные программаторы. [17]
Интерфейс программирования и отладки (PDI) — это фирменный интерфейс Atmel для внешнего программирования и отладки на кристалле устройств XMEGA. PDI поддерживает высокоскоростное программирование всех пространств энергонезависимой памяти (NVM); флэш-памяти, EEPROM, предохранителей, битов блокировки и строки подписи пользователя. Это делается путем доступа к контроллеру XMEGA NVM через интерфейс PDI и выполнения команд контроллера NVM. PDI — это 2-контактный интерфейс, использующий вывод сброса для тактового входа (PDI_CLK) и выделенный вывод данных (PDI_DATA) для входа и выхода. [18]
Унифицированный программный и отладочный интерфейс (UPDI) — это однопроводной интерфейс для внешнего программирования и отладки на кристалле новых устройств ATtiny и ATmega. Atmel-ICE и PICkit 4 способны программировать чипы UPDI. Также возможно использовать Arduino благодаря jtag2updi, [19] или стандартному адаптеру USB-UART с контактами TX и RX, закороченными резистором 1 кОм, и утилите pymcuprog, предоставляемой Microchip. [20]
Высоковольтное последовательное программирование (HVSP) [21] в основном является резервным режимом на небольших AVR. 8-контактный корпус AVR не оставляет много уникальных комбинаций сигналов для перевода AVR в режим программирования. Однако 12-вольтовый сигнал — это то, что AVR должен видеть только во время программирования и никогда во время нормальной работы. Высоковольтный режим также может использоваться в некоторых устройствах, где вывод сброса отключен предохранителями.
Высоковольтное параллельное программирование (HVPP) считается «последним средством» и может быть единственным способом исправить неисправные настройки предохранителя на микросхеме AVR.
Большинство моделей AVR могут резервировать область загрузчика , от 256 байт до 4 КБ, где может находиться код перепрограммирования. При сбросе загрузчик запускается первым и выполняет некоторое запрограммированное пользователем определение, перепрограммировать или перейти к основному приложению. Код может перепрограммироваться через любой доступный интерфейс или может считывать зашифрованный двоичный файл через адаптер Ethernet, такой как PXE . У Atmel есть заметки по применению и код, относящиеся ко многим интерфейсам шины. [22] [23] [24] [25]
Серия AVR AT90SC поставляется с заводским ПЗУ-маской, а не с флэш-памятью для памяти программ. [26] Из-за больших первоначальных затрат и минимального объема заказа ПЗУ-маской экономически эффективно только для крупносерийного производства.
aWire — это новый однопроводной интерфейс отладки, доступный на новых устройствах UC3L AVR32.
AVR предлагает несколько вариантов отладки, большинство из которых предполагает отладку на кристалле, пока кристалл находится в целевой системе.
debugWIRE — это решение Atmel для предоставления возможностей отладки на кристалле через один вывод микроконтроллера. Это особенно полезно для деталей с меньшим количеством выводов, которые не могут предоставить четыре «запасных» вывода, необходимых для JTAG. JTAGICE mkII, mkIII и AVR Dragon поддерживают debugWIRE. debugWIRE был разработан после оригинального выпуска JTAGICE, и теперь его поддерживают клоны.
Функция Joint Test Action Group ( JTAG ) обеспечивает доступ к функциям отладки на кристалле во время работы кристалла в целевой системе. [27] JTAG позволяет получать доступ к внутренней памяти и регистрам, устанавливать точки останова в коде и выполнять пошаговое выполнение для наблюдения за поведением системы.
Atmel предлагает серию адаптеров JTAG для AVR:
JTAG также можно использовать для выполнения теста граничного сканирования , [34] который проверяет электрические соединения между AVR и другими микросхемами, поддерживающими граничное сканирование в системе. Граничное сканирование хорошо подходит для производственной линии, в то время как любителю, вероятно, лучше проводить тестирование с помощью мультиметра или осциллографа.
Официальные инструменты разработки и оценочные комплекты Atmel AVR содержат ряд стартовых комплектов и инструментов отладки с поддержкой большинства устройств AVR:
Стартовый комплект и система разработки STK600 являются обновлением STK500. [35] STK600 использует базовую плату, плату маршрутизации сигналов и целевую плату.
Базовая плата похожа на STK500 тем, что она обеспечивает питание, часы, внутрисистемное программирование, порт RS-232 и порт CAN (Controller Area Network, автомобильный стандарт) через разъемы DE9, а также выводы для всех сигналов GPIO от целевого устройства.
Целевые платы имеют гнезда ZIF для корпусов DIP , SOIC , QFN или QFP , в зависимости от платы.
Плата маршрутизации сигналов располагается между базовой платой и целевой платой и направляет сигналы на соответствующий штифт на плате устройства. Существует много различных плат маршрутизации сигналов, которые можно использовать с одной целевой платой, в зависимости от того, какое устройство находится в гнезде ZIF.
STK600 позволяет осуществлять внутрисистемное программирование с ПК через USB, оставляя порт RS-232 доступным для целевого микроконтроллера. 4-контактный разъем на STK600 с маркировкой «RS-232 backup» может подключать любой порт USART уровня TTL на чипе к встроенному чипу MAX232 для преобразования сигналов в уровни RS-232. Сигналы RS-232 подключаются к контактам RX, TX, CTS и RTS на разъеме DB-9.
Стартовый комплект STK500 и система разработки включают ISP и высоковольтное программирование (HVP) для всех устройств AVR, как напрямую, так и через платы расширения. Плата оснащена DIP-гнездами для всех AVR, доступных в корпусах DIP.
Модули расширения STK500: Для платы STK500 доступно несколько модулей расширения:
Стартовый комплект STK200 и система разработки имеют гнездо DIP , в которое можно установить микросхему AVR в 40-, 20- или 8-контактном корпусе. Плата имеет источник тактовой частоты 4 МГц, 8 светодиодов (LED), 8 кнопок ввода, порт RS-232 , гнездо для 32 КБ SRAM и многочисленные общие входы/выходы. Микросхему можно программировать с помощью ключа, подключенного к параллельному порту.
Atmel ICE — это поддерживаемый в настоящее время недорогой инструмент для программирования и отладки всех устройств AVR (в отличие от AVRISP/AVRISP mkII, Dragon и т. д., обсуждаемых ниже). Он подключается к ПК и получает питание от него через USB, а также поддерживает интерфейсы JTAG , PDI , aWire , debugWIRE , SPI , SWD , TPI и UPDI (Microchip Unified Program and Debug Interface).
ICE может программировать и отлаживать все AVR через интерфейс JTAG, а также программировать с помощью дополнительных интерфейсов, поддерживаемых каждым устройством:
Поддерживаются диапазоны рабочего напряжения от 1,62 В до 5,5 В, а также следующие диапазоны тактовой частоты:
ICE поддерживается средой разработки Microchip Studio, а также интерфейсом командной строки (atprogram).
Atmel-ICE поддерживает ограниченную реализацию Data Gateway Interface (DGI), когда функции отладки и программирования не используются. Data Gateway Interface — это интерфейс для потоковой передачи данных с целевого устройства на подключенный компьютер. Он предназначен как полезное дополнение к устройству для демонстрации функций приложения и как помощь в отладке на уровне приложения.
AVRISP и AVRISP mkII — недорогие инструменты, позволяющие программировать все AVR через ICSP .
AVRISP подключается к ПК через последовательный порт и получает питание от целевой системы. AVRISP позволяет использовать любую из "стандартных" распиновок ICSP, как 10-контактный, так и 6-контактный разъем.
AVRISP mkII подключается к ПК через USB и получает питание от USB. Светодиоды , видимые через полупрозрачный корпус, показывают состояние питания цели.
Поскольку в AVRISP mkII отсутствуют микросхемы драйвера/буфера, [36] у него могут возникнуть проблемы с программированием целевых плат с несколькими нагрузками на линиях SPI. В таких случаях требуется программатор, способный обеспечить больший ток. В качестве альтернативы AVRISP mkII все еще можно использовать, если на линиях SPI перед каждым периферийным устройством можно разместить резисторы ограничения нагрузки с низким номиналом (~150 Ом).
И AVRISP, и AVRISP mkII теперь сняты с производства, а страницы продуктов удалены с веб-сайта Microchip. По состоянию на июль 2019 года AVRISP mkII все еще имеется в наличии у ряда дистрибьюторов. Также доступно несколько клонов сторонних производителей.
Atmel Dragon — недорогой инструмент, подключаемый к ПК через USB. Dragon может программировать все AVR через JTAG, HVP, PDI, [37] или ICSP. Dragon также позволяет отлаживать все AVR через JTAG, PDI или debugWire; предыдущее ограничение для устройств с 32 КБ или менее памяти программ было снято в AVR Studio 4.18. [38] Dragon имеет небольшую область прототипа, которая может вместить 8, 28 или 40-контактный AVR, включая соединения с питанием и программными контактами. Нет области для каких-либо дополнительных схем, хотя это может быть предоставлено сторонним продуктом под названием «Dragon Rider». [39]
Инструмент отладки JTAG In Circuit Emulator (JTAGICE) поддерживает отладку на кристалле ( OCD) AVR с интерфейсом JTAG. Оригинальный JTAGICE (иногда ретроспективно называемый JTAGICE mkI) использует интерфейс RS-232 для ПК и может программировать только AVR с интерфейсом JTAG. JTAGICE mkI больше не выпускается, однако его заменил JTAGICE mkII.
Инструмент отладки JTAGICE mkII поддерживает отладку на кристалле (OCD) AVR с интерфейсами SPI, JTAG, PDI и debugWIRE. Интерфейс debugWire позволяет выполнять отладку с использованием только одного контакта (контакта Reset), что позволяет отлаживать приложения, работающие на микроконтроллерах с малым количеством контактов.
JTAGICE mkII подключается через USB, но есть альтернативное подключение через последовательный порт, которое требует использования отдельного источника питания. В дополнение к JTAG, mkII поддерживает программирование ISP (с использованием адаптеров с 6 или 10 контактами). Как USB, так и последовательные соединения используют вариант протокола STK500.
JTAGICE3 обновляет mkII, предлагая более продвинутые возможности отладки и более быстрое программирование. Он подключается через USB и поддерживает интерфейсы JTAG, aWire, SPI и PDI. [40] В комплект входит несколько адаптеров для использования с большинством интерфейсных выводов.
AVR ONE! — это профессиональный инструмент разработки для всех 8- и 32-битных устройств Atmel AVR с возможностью отладки на кристалле. Он поддерживает режимы программирования SPI, JTAG, PDI и aWire и отладку с использованием интерфейсов debugWIRE, JTAG, PDI и aWire. [41]
Очень популярная демонстрационная плата AVR Butterfly представляет собой автономный компьютер с питанием от батареи, работающий на микроконтроллере Atmel AVR ATmega169V. Она была создана для демонстрации семейства AVR, особенно нового на тот момент встроенного интерфейса ЖК-дисплея. Плата включает в себя ЖК-экран, джойстик, динамик, последовательный порт, часы реального времени (RTC), чип флэш-памяти, а также датчики температуры и напряжения. Более ранние версии AVR Butterfly также содержали фоторезистор CdS ; он отсутствует на платах Butterfly, выпущенных после июня 2006 года, чтобы обеспечить соответствие RoHS . [42] На небольшой плате сзади есть булавка для рубашки, поэтому ее можно носить как бейдж.
AVR Butterfly поставляется с предустановленным программным обеспечением для демонстрации возможностей микроконтроллера. Заводская прошивка может прокручивать ваше имя, отображать показания датчиков и показывать время. AVR Butterfly также имеет пьезоэлектрический преобразователь, который может использоваться для воспроизведения звуков и музыки.
AVR Butterfly демонстрирует управление ЖК-дисплеем, используя 14-сегментный шестибуквенно-цифровой дисплей. Однако интерфейс ЖК-дисплея потребляет много контактов ввода/вывода.
Процессор Butterfly ATmega169 способен развивать частоту до 8 МГц, но на заводе он установлен программным обеспечением на 2 МГц, чтобы продлить срок службы батареи кнопки. Предустановленная программа загрузчика позволяет перепрограммировать плату через стандартный последовательный разъем RS-232 с помощью новых программ, которые пользователи могут писать с помощью бесплатных инструментов Atmel IDE.
Эта небольшая плата, размером примерно с половину визитной карточки, стоит немного дороже, чем AVR Butterfly. Она включает в себя AT90USB1287 с поддержкой USB On-The-Go (OTG), 16 МБ DataFlash , светодиоды, небольшой джойстик и датчик температуры. Плата включает в себя программное обеспечение, которое позволяет ей работать как USB-накопитель (документация поставляется на DataFlash), USB-джойстик и многое другое. Для поддержки возможности USB-хоста она должна работать от батареи, но при работе в качестве периферийного USB-устройства ей требуется только питание, подаваемое по USB.
Только порт JTAG использует обычную распиновку 2,54 мм. Все остальные порты ввода-вывода AVR требуют более компактных разъемов 1,27 мм.
AVR Dragon может как программировать, так и отлаживать, поскольку ограничение в 32 КБ было снято в AVR Studio 4.18, а JTAGICE mkII способен как программировать, так и отлаживать процессор. Процессор также можно программировать через USB с хоста Windows или Linux, используя протоколы USB "Device Firmware Update". Atmel поставляет собственные (исходный код включен, но распространение ограничено) примеры программ и стек протоколов USB вместе с устройством.
LUFA [43] — это стороннее бесплатное программное обеспечение ( лицензия MIT ) для стека USB-протоколов USBKey и других 8-битных USB AVR.
Комплект RAVEN поддерживает беспроводную разработку с использованием чипсетов Atmel IEEE 802.15.4 для Zigbee и других беспроводных стеков. Он напоминает пару беспроводных более мощных карт Butterfly, плюс беспроводной USBKey; и стоит примерно столько же (менее 100 долларов США). Все эти платы поддерживают разработку на основе JTAG.
В комплект входят две платы AVR Raven, каждая с приемопередатчиком 2,4 ГГц, поддерживающим IEEE 802.15.4 (и свободно лицензируемый стек Zigbee). Радиостанции работают на процессорах ATmega1284p, которые поддерживаются специальным сегментированным ЖК-дисплеем, управляемым процессором ATmega3290p. Периферийные устройства Raven напоминают Butterfly: пьезоэлектрический динамик, DataFlash (больше), внешняя EEPROM, датчики, кристалл 32 кГц для RTC и т. д. Они предназначены для использования при разработке удаленных сенсорных узлов, для управления реле или для всего необходимого.
USB-накопитель использует AT90USB1287 для подключения к USB-хосту и беспроводным каналам связи 2,4 ГГц. Они предназначены для мониторинга и управления удаленными узлами, полагаясь на питание хоста, а не на локальные батареи.
Для AVR доступен широкий спектр сторонних инструментов программирования и отладки. Эти устройства используют различные интерфейсы, включая RS-232, параллельный порт ПК и USB. [44]
AVR использовались в различных автомобильных приложениях, таких как системы безопасности, защиты, силовые агрегаты и развлекательные системы. Недавно Atmel выпустила новую публикацию "Atmel Automotive Compilation", чтобы помочь разработчикам с автомобильными приложениями. Некоторые текущие применения - BMW, Daimler-Chrysler и TRW.
Физическая вычислительная платформа Arduino основана на микроконтроллере ATmega328 (ATmega168 или ATmega8 в версиях плат старше Diecimila). ATmega1280 и ATmega2560 с большей цоколевкой и возможностями памяти также использовались для разработки платформы Arduino Mega . Платы Arduino могут использоваться с ее языком и IDE или с более традиционными средами программирования ( C , ассемблер и т. д.) как просто стандартизированные и широко доступные платформы AVR.
AVR на базе USB использовались в ручных контроллерах Microsoft Xbox. Связь между контроллерами и Xbox осуществляется через USB.
Многочисленные компании производят платы микроконтроллеров на базе AVR, предназначенные для использования любителями, конструкторами роботов, экспериментаторами и разработчиками небольших систем, в том числе: Cubloc, [45] gnusb, [46] BasicX , [47] Oak Micros, [48] ZX Microcontrollers, [49] и myAVR. [50] Существует также большое сообщество совместимых с Arduino плат, поддерживающих похожих пользователей.
Компания Schneider Electric раньше производила микросхему управления двигателем и движением M3000, включающую ядро Atmel AVR и усовершенствованный контроллер движения для использования в различных приложениях движения, но производство было прекращено. [51]
С ростом популярности FPGA среди сообщества разработчиков программного обеспечения с открытым исходным кодом люди начали разрабатывать процессоры с открытым исходным кодом, совместимые с набором инструкций AVR. На сайте OpenCores перечислены следующие основные проекты клонов AVR:
Помимо чипов, производимых Atmel, клоны доступны от LogicGreen Technologies. [57] Эти детали не являются точными клонами — у них есть несколько функций, которых нет в чипах, «клонами» которых они являются, и более высокие максимальные тактовые частоты, но для программирования они используют SWD ( Serial Wire Debug , вариант JTAG от ARM ) вместо ISP, поэтому необходимо использовать другие инструменты программирования.
Микроконтроллеры, использующие архитектуру ATmega, производятся НИИЭТ в Воронеже , Россия, как часть серии интегральных схем 1887. Сюда входит ATmega128 под обозначением 1887ВЕ7Т ( русский : 1887ВЕ7Т ). [58]
Линия сброса имеет внутренний подтягивающий резистор, но если окружающая среда шумная, его может быть недостаточно, и сброс может происходить спорадически.