Введение

Семейство микроконтроллеров
серия микроконтроллеров AVR

AVR – это семейство микроконтроллеров, разработанное компанией Atmel с 1996 года и приобретенное Microchip Technology в 2016 году. Это 8-битные RISC-микроконтроллеры с одним чипом, основанные на модифицированной архитектуре Гарварда. AVR стало одним из первых семейств микроконтроллеров, использующих встроенную флеш-память для хранения программ, в отличие от однократно программируемых ROM, EPROM или EEPROM, применяемых в других микроконтроллерах того времени. Микроконтроллеры AVR широко используются в качестве встраиваемых систем. Они особенно популярны в любительских и образовательных встраиваемых приложениях, благодаря их включению во многие платы разработки открытого аппаратного обеспечения Arduino.

История

Архитектура AVR была разработана двумя студентами Норвежского технологического института (NTH), Альфом Эгилом Богеном и Вегардом Волланом. Компания Atmel утверждает, что название AVR не является аббревиатурой и не расшифровывается как что-либо конкретное. Создатели AVR не дают однозначного ответа на вопрос о значении термина "AVR". Следует отметить, что в данной статье под "AVR" обычно подразумевается 8-битная RISC-линейка микроконтроллеров Atmel AVR. Оригинальный микроконтроллер AVR (MCU) был разработан в местной компании, специализирующейся на разработке ASIC, в Тронхейме, Норвегия, которая в то время называлась Nordic VLSI, а сейчас – Nordic Semiconductor, где Боген и Воллан работали студентами. Он был известен как μRISC (Micro RISC) и предлагался Nordic VLSI в виде кремниевого IP/строительного блока. Когда технология была продана Atmel компанией Nordic VLSI, внутренняя архитектура была доработана Богеном и Волланом в Atmel Norway, дочерней компании Atmel. Разработчики тесно сотрудничали с создателями компиляторов из IAR Systems, чтобы обеспечить эффективную компиляцию языков высокого уровня для набора инструкций AVR. Одним из первых микроконтроллеров линейки AVR был AT90S8515, который в 40-выводном DIP-корпусе имеет такую же распиновку, как у микроконтроллера 8051, включая внешнюю мультиплексированную адресную и шину данных. Полярность линии RESET была обратной (у 8051 – активный высокий RESET, а у AVR – активный низкий RESET), но в остальном распиновка была идентичной. 8-битная архитектура микроконтроллера AVR была представлена в 1997 году. К 2003 году компания Atmel отгрузила 500 миллионов флеш-микроконтроллеров AVR. Платформа Arduino, разработанная для простых электронных проектов, была выпущена в 2005 году и включала микроконтроллеры ATmega8 AVR.

Обзор устройства

AVR — это микроконтроллер с модифицированной гарвардской архитектурой, в котором программа и данные хранятся в отдельных физических системах памяти, представляющих собой различные адресные пространства, но при этом предусмотрена возможность чтения данных из памяти программ с использованием специальных инструкций.

Архитектура устройства

AVR содержат 32 однобайтовых регистра и классифицируются как 8-битные RISC-микроконтроллеры. Flash-память, EEPROM и SRAM интегрированы в один чип, что избавляет от необходимости использования внешней памяти в большинстве приложений. Некоторые устройства имеют возможность подключения параллельной внешней шины для добавления дополнительной памяти данных или устройств, отображаемых в память. Почти все устройства (за исключением самых маленьких микроконтроллеров TinyAVR) оснащены последовательными интерфейсами, которые можно использовать для подключения более крупных последовательных EEPROM или Flash-памяти.

Память программы

Программные инструкции хранятся в энергонезависимой флеш-памяти. Несмотря на то, что микроконтроллеры 8-битные, каждая инструкция занимает одно или два 16-битных слова. Размер программной памяти обычно указывается в наименовании самого устройства (например, семейство ATmega64x имеет 64 КБ флеш-памяти, а семейство ATmega32x – 32 КБ). Предусмотрена только встроенная память для программ; весь код, выполняемый ядром AVR, должен располагаться во встроенной флеш-памяти. Однако это ограничение не распространяется на чипы AT94 FPSLIC AVR/FPGA.

Внутренняя память данных

Адресное пространство данных состоит из регистрового файла, регистров ввода-вывода и SRAM. В некоторых малогабаритных моделях также отображается ПЗУ программы в адресное пространство данных, но в более крупных моделях этого не происходит.

Внутренние реестры

В вариантах tinyAVR и megaAVR архитектуры AVR рабочие регистры отображаются в виде первых 32 адресов памяти данных (000016–001F16), за которыми следуют 64 регистра ввода/вывода (002016–005F16). В устройствах с большим количеством периферийных устройств эти регистры сопровождаются 160 регистрами расширенного ввода/вывода, доступными только как память, отображенная во ввод/вывод (006016–00FF16). Фактическая SRAM начинается после этих секций регистров по адресу 006016 или, в устройствах с расширенным вводом/выводом, по адресу 010016. Несмотря на то, что существуют отдельные схемы адресации и оптимизированные опкоды для доступа к файлу регистров и первым 64 регистрам ввода/вывода, ко всем им можно обращаться и манипулировать ими так, как если бы они находились в SRAM. Самые маленькие варианты tinyAVR используют упрощенную архитектуру, содержащую только 16 регистров (r0–r15 исключены), которые не адресуются как ячейки памяти. Память ввода/вывода начинается с адреса 000016, за которой следует SRAM. Кроме того, эти устройства имеют незначительные отклонения от стандартного набора инструкций AVR. В частности, инструкции прямой загрузки/сохранения (LDS/STS) были сокращены с 2 слов (32 бита) до 1 слова (16 битов), что ограничивает общий объем напрямую адресуемой памяти (сумму памяти ввода/вывода и SRAM) до 128 байт. В свою очередь, 16-битное адресное пространство косвенной инструкции загрузки (LD) расширяется, чтобы включать также энергонезависимую память, такую как Flash и биты конфигурации; следовательно, инструкция загрузки программы памяти (LPM) становится ненужной и исключается. (Подробную информацию см. в наборе инструкций Atmel AVR.) В варианте XMEGA файл рабочих регистров не отображается в адресное пространство данных, поэтому ни один из рабочих регистров XMEGA не может рассматриваться как SRAM. Вместо этого регистры ввода/вывода отображаются в адресное пространство данных, начиная с самого начала адресного пространства. Кроме того, объем адресного пространства данных, выделенного для регистров ввода/вывода, значительно увеличился до 4096 байт (000016–0FFF16). Однако, как и в предыдущих поколениях, инструкции быстрого манипулирования вводом/выводом могут обращаться только к первым 64 ячейкам регистров ввода/вывода (первые 32 ячейки для побитовых инструкций). После регистров ввода/вывода серия XMEGA резервирует диапазон в 4096 байт адресного пространства данных, который может быть опционально использован для отображения внутренней EEPROM в адресное пространство данных (100016–1FFF16). Фактическая SRAM находится после этих диапазонов, начиная с 200016.

Порты GPIO

Каждый порт GPIO на микроконтроллерах tiny или mega AVR управляет до восьми выводов и контролируется тремя 8-битными регистрами: DDRx, PORTx и PINx, где x – идентификатор порта. DDRx: регистр направления данных, конфигурирует выводы как входы или выходы. PORTx: регистр выходного порта. Устанавливает выходное значение на выводах, сконфигурированных как выходы. Включает или отключает подтягивающий резистор на выводах, сконфигурированных как входы. PINx: входной регистр, используемый для считывания входного сигнала. На некоторых устройствах этот регистр может использоваться для инвертирования состояния вывода: запись логической единицы в бит PINx инвертирует соответствующий бит в PORTx, независимо от настройки бита DDRx. Новые микроконтроллеры ATtiny AVR, такие как ATtiny817 и его аналоги, имеют несколько иную организацию регистров управления портами. xmegaAVR имеют дополнительные регистры для конфигураций с открытым коллектором, тотемного типа и подтягивающим резистором.

EEPROM

Почти все микроконтроллеры AVR имеют встроенную EEPROM для полупостоянного хранения данных. Как и флэш-память, EEPROM сохраняет своё содержимое при отключении электропитания. В большинстве вариантов архитектуры AVR эта внутренняя EEPROM-память не отображается в адресуемое пространство памяти микроконтроллера. Доступ к ней осуществляется так же, как к внешнему периферийному устройству, с использованием специальных регистров указателей и инструкций чтения/записи, что делает доступ к EEPROM значительно медленнее, чем к другой внутренней оперативной памяти. Однако некоторые устройства семейства SecureAVR (AT90SC) используют специальное отображение EEPROM в память данных или программ, в зависимости от конфигурации. Семейство XMEGA также позволяет отображать EEPROM в адресное пространство данных. Поскольку количество циклов записи в EEPROM ограничено – Atmel указывает 100 000 циклов записи в своих технических описаниях – хорошо спроектированная процедура записи в EEPROM должна сравнивать содержимое адреса EEPROM с желаемым содержимым и выполнять фактическую запись только в случае необходимости изменения данных.

Выполнение программы

У микроконтроллеров AVR от Atmel двухступенчатая, одноуровневая архитектура конвейера. Это означает, что следующая машинная инструкция извлекается во время выполнения текущей. Большинство инструкций выполняются всего за один или два тактовых цикла, что делает AVR относительно быстрыми среди восьмибитных микроконтроллеров. Процессоры AVR были разработаны с учетом эффективного выполнения скомпилированного кода на C и имеют несколько встроенных указателей для решения этой задачи.

Интерфейсы программирования

Существует множество способов загрузки программного кода в микроконтроллер AVR. Методы программирования микроконтроллеров AVR различаются в зависимости от семейства. Большинство способов, описанных ниже, используют линию RESET для перехода в режим программирования. Чтобы предотвратить случайный вход микроконтроллера в этот режим, рекомендуется подключить подтягивающий резистор между выводом RESET и положительным напряжением питания.

ПСП

Метод программирования в системе (ISP) функционально реализуется через SPI, а также управлением линией сброса (Reset). Пока 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, использующие последовательный порт, а также различные сторонние и самодельные программисты.

ПДИ

Интерфейс программирования и отладки (PDI) — это запатентованный интерфейс Atmel для внешнего программирования и встроенной отладки устройств XMEGA. PDI поддерживает высокоскоростное программирование всех областей энергонезависимой памяти (NVM), включая флэш-память, EEPROM, предохранители, биты блокировки и строку пользовательской подписи. Это достигается путем доступа к контроллеру NVM XMEGA через интерфейс PDI и выполнения команд контроллера NVM. PDI представляет собой двухконтактный интерфейс, использующий вывод Reset в качестве входного тактового сигнала (PDI CLK) и выделенный вывод данных (PDI DATA) для ввода и вывода информации.

УПДИ

Единый интерфейс программирования и отладки (UPDI) — это однопроводной интерфейс для внешней прошивки и встроенной отладки новых микроконтроллеров ATtiny и ATmega. Atmel ICE и PICkit 4 поддерживают прошивку микросхем с интерфейсом UPDI. Также можно использовать Arduino с помощью jtag2updi или стандартный USB-UART адаптер, с соединенными выводами TX и RX через резистор 1 кОм, и утилиту pymcuprog, предоставляемую Microchip.

Серийные высоковольтные

Высоковольтное последовательное программирование (HVSP) чаще всего используется как резервный режим на микроконтроллерах AVR с небольшим количеством выводов. 8-выводной корпус AVR не предоставляет большого количества уникальных комбинаций сигналов для перевода микроконтроллера в режим программирования. Однако, 12-вольтный сигнал микроконтроллер AVR должен видеть только во время программирования и никогда – в нормальном режиме работы. Режим высокого напряжения также может быть использован в некоторых устройствах, где вывод сброса был заблокирован настройками предохранителей.

Параллельная высоковольтная система

Высоковольтное параллельное программирование (HVPP) считается "крайней мерой" и может быть единственным способом исправить некорректные настройки битов предохранителей на чипе AVR.

Загрузчик

Большинство моделей AVR позволяют зарезервировать область загрузчика размером от 256 байт до 4 КБ, в которой может располагаться код перепрограммирования. После сброса загрузчик запускается первым и выполняет пользовательскую процедуру определения, следует ли перепрограммировать устройство или перейти к основному приложению. Перепрограммирование может осуществляться через любой доступный интерфейс, либо загрузчик может считывать зашифрованный бинарный файл через Ethernet-адаптер, например, с использованием PXE. Atmel предоставляет документацию и примеры кода для работы с различными шинным интерфейсам.

РОМ

Серия микроконтроллеров AVR AT90SC выпускается с заводской маской ПЗУ вместо флэш-памяти для хранения программы. В связи с высокой начальной стоимостью и минимальным объемом заказа, маска ПЗУ экономически целесообразна только при крупносерийном производстве.

Проводка

aWire — это новый однопроводный интерфейс отладки, доступный на новых устройствах UC3L AVR32.

Интерфейсы отладки

AVR предоставляет несколько возможностей для отладки, в основном связанных с внутрисхемной отладкой непосредственно в целевой системе.

debugWIRE (отладка)

debugWIRE – это решение Atmel для обеспечения возможностей отладки непосредственно на кристалле через один вывод микроконтроллера. Оно особенно полезно для микроконтроллеров с небольшим количеством выводов, которым не хватает четырех "свободных" выводов, необходимых для JTAG. JTAGICE mkII, mkIII и AVR Dragon поддерживают debugWIRE. debugWIRE был разработан после выпуска оригинального JTAGICE, и теперь его поддерживают и клоны.

Стартерная установка STK600

Стартовый комплект и система разработки STK600 является обновлением STK500. STK600 состоит из базовой платы, платы разводки сигналов и целевой платы. Базовая плата аналогична STK500, обеспечивая питание, тактирование, внутрисистемное программирование, порт RS 232 и порт CAN (Controller Area Network, автомобильный стандарт) через разъемы DE9, а также контакты для всех сигналов GPIO от целевого устройства. Целевые платы оснащены ZIF-сокетами для корпусов DIP, SOIC, QFN или QFP, в зависимости от платы. Плата разводки сигналов располагается между базовой и целевой платами, направляя сигналы на соответствующие выводы на плате устройства. Для одной целевой платы может использоваться множество различных плат разводки сигналов, в зависимости от установленного в ZIF-сокете устройства. STK600 обеспечивает внутрисистемное программирование с ПК через USB, оставляя порт RS 232 доступным для целевого микроконтроллера. 4-контактный разъем на STK600 с обозначением "RS 232 spare" позволяет подключить любой USART-порт уровня TTL на чипе к встроенному чипу MAX232 для преобразования сигналов в уровни RS 232. Сигналы RS 232 подключены к выводам RX, TX, CTS и RTS на разъеме DB 9.

AVRISP и AVRISP mkII

AVRISP и AVRISP mkII – это недорогие инструменты, позволяющие программировать все микроконтроллеры AVR через ICSP. AVRISP подключается к ПК через последовательный порт и питается от целевой системы. AVRISP поддерживает оба "стандартных" подключения ICSP – 10-контактный и 6-контактный разъемы. AVRISP mkII подключается к ПК через USB и питается от USB. Светодиоды, видимые через полупрозрачный корпус, показывают состояние питания целевой системы. Поскольку AVRISP mkII не содержит драйверов/буферных микросхем, он может испытывать трудности при программировании целевых плат с несколькими нагрузками на линиях SPI. В таких случаях требуется программатор, способный выдавать больший ток. В качестве альтернативы, AVRISP mkII можно использовать, если на линии SPI перед каждым периферийным устройством установить ограничивающие резисторы небольшого номинала (~150 Ом). Производство AVRISP и AVRISP mkII прекращено, а страницы продуктов удалены с сайта Microchip. По состоянию на июль 2019 года AVRISP mkII все еще доступен у ряда дистрибьюторов. Также существуют различные клоны от сторонних производителей.

AVR Дракон

Atmel Dragon – это недорогой инструмент, подключаемый к ПК через USB. Dragon может программировать все микроконтроллеры AVR через JTAG, HVP, PDI или ICSP. Dragon также позволяет отлаживать все микроконтроллеры AVR через JTAG, PDI или debugWire; предыдущее ограничение на устройства с 32 КБ или менее оперативной памяти было снято в AVR Studio 4.18. Dragon имеет небольшую область для прототипирования, на которой можно разместить 8-, 28- или 40-выводной микроконтроллер AVR, включая подключения к контактам питания и программирования. Места для дополнительной электроники нет, хотя это можно обеспечить с помощью стороннего продукта под названием "Dragon Rider".

Суд

Инструмент отладки 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.

ПРИМЕЧАНИЕ 3

JTAGICE3 обновляет mkII, предоставляя более продвинутые возможности отладки и ускоренное программирование. Он подключается через USB и поддерживает интерфейсы JTAG, aWire, SPI и PDI. В комплект входят несколько адаптеров для работы с большинством типов распиновки интерфейсов.

AVR один!

AVR ONE! — это профессиональный инструмент разработки для всех 8-битных и 32-битных устройств AVR Atmel с возможностью отладки на кристалле. Он поддерживает режимы программирования SPI, JTAG, PDI и aWire, а также отладку через интерфейсы debugWIRE, JTAG, PDI и aWire.

Демонстрационная доска с бабочками

Очень популярная демонстрационная плата AVR Butterfly – это автономный, работающий от батареи компьютер на базе микроконтроллера Atmel AVR ATmega169V. Она была разработана для демонстрации семейства AVR, особенно нового на тот момент встроенного LCD-интерфейса. Плата включает в себя ЖК-экран, джойстик, динамик, последовательный порт, часы реального времени (RTC), чип флэш-памяти, а также датчики температуры и напряжения. Более ранние версии AVR Butterfly также содержали фоторезистор CdS, однако он отсутствует на платах Butterfly, произведенных после июня 2006 года, для соответствия требованиям RoHS. На задней стороне небольшой платы имеется булавка для крепления к одежде, позволяющая носить её как бейдж. AVR Butterfly поставляется с предустановленным программным обеспечением, демонстрирующим возможности микроконтроллера. Заводская прошивка может прокручивать ваше имя, отображать показания датчиков и показывать текущее время. AVR Butterfly также оснащена пьезоэлектрическим преобразователем, который можно использовать для воспроизведения звуков и музыки. AVR Butterfly демонстрирует управление ЖК-дисплеем, используя 14-сегментный, шестизначный буквенно-цифровой дисплей. Однако LCD-интерфейс потребляет значительное количество портов ввода-вывода. Процессор ATmega169 на плате Butterfly способен работать на частоте до 8 МГц, но программно ограничен до 2 МГц для увеличения времени работы от батареи. Предустановленная программа загрузчика позволяет перепрограммировать плату через стандартный последовательный порт RS 232 с использованием новых программ, написанных пользователями в бесплатной среде разработки Atmel IDE.

AT90USBKey

Эта небольшая плата, размером примерно вдвое меньше визитной карточки, стоит несколько дороже, чем 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. Atmel поставляет с устройством проприетарные примеры программ (с включенным исходным кодом, но с ограниченным распространением) и стек протоколов USB. LUFA – это сторонний пакет бесплатного программного обеспечения (лицензия 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.

Применение

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, gnusb, BasicX, Oak Micros, ZX Microcontrollers и myAVR. Существует также большое сообщество плат, совместимых с Arduino, поддерживающих аналогичных пользователей. Компания Schneider Electric ранее производила чип M3000 Motor and Motion Control, включающий ядро Atmel AVR и продвинутый контроллер движения для использования в различных приложениях управления движением, но его производство было прекращено.

Клоны FPGA

С ростом популярности FPGA среди сообщества открытого исходного кода, люди начали разрабатывать процессоры с открытым исходным кодом, совместимые с набором инструкций AVR. На веб-сайте OpenCores перечислены следующие основные проекты клонов AVR: pAVR, написанный на VHDL, предназначен для создания самого быстрого и максимально функционального процессора AVR, реализуя методы, отсутствующие в оригинальном процессоре AVR, такие как более глубокая организация конвейера. avr core, написанный на VHDL, является клоном, стремящимся быть максимально приближенным к ATmega103. Navré, написанный на Verilog, реализует все инструкции Classic Core и ориентирован на высокую производительность и минимальное потребление ресурсов. Он не поддерживает прерывания. softavrcore, написанный на Verilog, реализует набор инструкций AVR до версии AVR5, поддерживает прерывания, а также опциональное автоматическое подтверждение прерываний, энергосбережение через режим сна и некоторые периферийные интерфейсы и аппаратные ускорители (такие как UART, SPI, блок вычисления циклической избыточности и системные таймеры). Эти периферийные устройства демонстрируют, как их можно подключить и настроить для этого ядра. В составе пакета также доступен полнофункциональный порт FreeRTOS в качестве примера использования ядра и периферии. Лекция по архитектуре процессоров проекта opencores, написанная на VHDL доктором Юргеном Сауэрманном, подробно объясняет, как спроектировать полноценную систему на кристалле (SoC) на базе AVR.

Другие продавцы

В дополнение к чипам, производимым Atmel, клоны доступны у LogicGreen Technologies. Эти компоненты не являются точными клонами – они обладают некоторыми функциями, отсутствующими в чипах, от которых они были скопированы, и более высокой максимальной тактовой частотой, но для программирования используют SWD (Serial Wire Debug, разновидность JTAG от ARM) вместо ISP, поэтому требуются другие инструменты для программирования. Микроконтроллеры, использующие архитектуру ATmega, производятся НИИЭТ в Воронеже, Россия, в рамках серии интегральных схем 1887. В частности, ATmega128 выпускается под обозначением 1887VE7T (1887ВЕ7Т).