Открыть сервис

Atmel AVR

Atmel AVR — это семейство 8-битных и 32-битных микроконтроллеров, разработанных компанией Atmel (ныне подразделение Microchip Technology). Микроконтроллеры AVR характеризуются гарвардской архитектурой, RISC-системой команд (Reduced Instruction Set Computer) и Flash-памятью программ, что позволяет их многократно перепрограммировать в готовом устройстве. Семейство широко применяется в любительской электронике, промышленной автоматике, бытовой технике и образовательных проектах, в частности, в платформе Arduino.

История

Разработка микроконтроллеров AVR началась в 1996 году в Норвегии, в компании Atmel Norway, основанной двумя студентами Норвежского университета науки и технологии — Альфом-Эгилем Богеном (Alf-Egil Bogen) и Вегардом Волленом (Vegard Wollan). Первоначально проект назывался μRISC (Micro RISC). Первый коммерческий образец, AT90S1200, был выпущен в 1997 году. Название AVR, по разным версиям, является аббревиатурой от «Advanced Virtual RISC» или образовано от инициалов создателей (Alf and Vegard’s RISC processor).

В 1998 году Atmel представила линейку ATmega, которая стала наиболее популярной. В 2002 году появились 8-контактные микроконтроллеры ATtiny, ориентированные на маломощные и компактные применения. В 2006 году Atmel выпустила 32-битное семейство AVR32, которое, однако, не получило широкого распространения. В 2016 году Atmel была приобретена компанией Microchip Technology, которая продолжает выпуск и поддержку AVR, интегрируя их в свою экосистему.

Архитектура

Микроконтроллеры AVR построены на модифицированной гарвардской архитектуре, где память программ (Flash) и память данных (SRAM) имеют отдельные шины и адресные пространства. Это позволяет выполнять выборку команды и операции с данными одновременно, повышая производительность.

Ядро

Ядро AVR является 8-битным RISC-процессором с 32 регистрами общего назначения (R0–R31), объединёнными в регистровый файл. Большинство арифметических и логических операций выполняются непосредственно над регистрами, а не над памятью, что ускоряет выполнение кода. Система команд включает около 130 инструкций, большинство из которых выполняются за один тактовый цикл.

Память

  • Flash-память программ: объём от 1 КБ (ATtiny) до 256 КБ (ATmega) и более. Предназначена для хранения кода. Допускает не менее 10 000 циклов перезаписи.
  • SRAM (статическая память с произвольным доступом): объём от 64 байт до 16 КБ. Используется для хранения переменных и стека.
  • EEPROM (электрически стираемое программируемое постоянное запоминающее устройство): объём от 64 байт до 4 КБ. Предназначена для долговременного хранения данных, которые могут изменяться в процессе работы (например, калибровочные коэффициенты). Допускает не менее 100 000 циклов перезаписи.

Периферия

Микроконтроллеры AVR оснащены широким набором встроенных периферийных модулей:

  • Таймеры/счётчики: 8- и 16-битные, с возможностью генерации ШИМ-сигнала (широтно-импульсная модуляция).
  • АЦП (аналого-цифровой преобразователь): 10-битный, с мультиплексированными каналами (до 16).
  • ЦАП (цифро-аналоговый преобразователь): имеется в некоторых моделях (например, ATmega1284).
  • UART/USART: универсальный асинхронный приёмопередатчик для последовательной связи.
  • SPI (Serial Peripheral Interface): синхронный последовательный интерфейс для обмена данными с периферией.
  • I²C (Inter-Integrated Circuit): двухпроводной последовательный интерфейс.
  • Сторожевой таймер (Watchdog Timer): сбрасывает микроконтроллер при зависании программы.
  • Компараторы: аналоговые компараторы для сравнения напряжений.
  • Интерфейсы USB, CAN, LIN: имеются в специализированных моделях.

Классификация

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

ATtiny

Младшее семейство, предназначенное для простых и маломощных применений. Характеризуется малым числом выводов (8–20), небольшим объёмом памяти (до 16 КБ Flash) и ограниченным набором периферии. Примеры: ATtiny13, ATtiny85, ATtiny2313.

ATmega

Основное и наиболее распространённое семейство. Обладает сбалансированными характеристиками: объём Flash от 8 до 256 КБ, число выводов от 28 до 100, широкий набор периферии. Именно микроконтроллеры ATmega (ATmega328P, ATmega2560) используются в платах Arduino Uno и Arduino Mega. Примеры: ATmega8, ATmega16, ATmega328P, ATmega2560.

AT90USB

Семейство, ориентированное на работу с USB-интерфейсом. Включает встроенный USB-контроллер, что позволяет создавать устройства, подключаемые к компьютеру без дополнительных чипов. Примеры: AT90USB1287, AT90USB162.

AVR XMEGA

Более современное и производительное семейство, представленное в 2008 году. Отличается 2- или 4-стадийным конвейером, увеличенной тактовой частотой (до 32 МГц), расширенными возможностями периферии (например, DMA-контроллер, событийная система) и пониженным энергопотреблением. Примеры: ATxmega128A1, ATxmega32A4.

AVR DA и DB

Новейшие семейства, выпущенные Microchip Technology после приобретения Atmel. Отличаются улучшенной аналоговой периферией (12-битный АЦП, ЦАП), повышенной точностью и пониженным энергопотреблением. Примеры: AVR128DA48, AVR64DB32.

Программирование

Микроконтроллеры AVR программируются на языках C/C++ (с использованием компиляторов AVR-GCC, IAR Embedded Workbench) или на ассемблере AVR. Для разработки используется среда Atmel Studio (ныне Microchip Studio) — бесплатная IDE на базе Visual Studio Shell, включающая компилятор, отладчик и симулятор.

Загрузка кода

Программа записывается в Flash-память микроконтроллера через интерфейсы:

  • ISP (In-System Programming): последовательный интерфейс (SPI), позволяющий программировать микроконтроллер непосредственно в схеме. Для этого используется программатор (например, USBasp, AVRISP mkII).
  • JTAG (Joint Test Action Group): интерфейс для отладки и программирования, доступный в старших моделях.
  • Bootloader: небольшая программа, записанная в отдельный раздел Flash, которая позволяет загружать код через последовательный порт (UART) или USB без внешнего программатора. Именно bootloader используется в платах Arduino.

Применение

Благодаря низкой стоимости, простоте разработки и широкой доступности, микроконтроллеры AVR нашли применение во множестве областей:

  • Любительская электроника и DIY-проекты: платформа Arduino, построенная на ATmega328P, стала стандартом для обучения и прототипирования.
  • Промышленная автоматика: контроллеры для управления двигателями, датчиками, реле, исполнительными механизмами.
  • Бытовая техника: стиральные машины, микроволновые печи, кофемашины, пульты дистанционного управления.
  • Автомобильная электроника: блоки управления двигателем, иммобилайзеры, панели приборов.
  • Медицинская техника: простые диагностические приборы, мониторы, инфузионные насосы.
  • Игрушки и робототехника: управление сервоприводами, датчиками, светодиодами.

Интересные факты

  • Название «AVR» неофициально расшифровывается как «Alf and Vegard’s RISC processor» — по именам создателей.
  • Микроконтроллер ATmega328P, используемый в Arduino Uno, является одним из самых продаваемых микроконтроллеров в мире.
  • В 2018 году Microchip Technology объявила о прекращении производства некоторых моделей AVR, но позже возобновила выпуск из-за высокого спроса.
  • Существует множество клонов и совместимых микроконтроллеров, например, от китайских производителей, что удешевляет разработку.

Критика

Несмотря на популярность, микроконтроллеры AVR имеют ряд недостатков. Критики отмечают относительно низкую производительность по сравнению с конкурентами (например, ARM Cortex-M), ограниченный объём памяти в младших моделях и устаревшую архитектуру, которая не позволяет эффективно выполнять сложные алгоритмы. Также отмечается, что экосистема Microchip Technology (Atmel Studio) менее удобна и функциональна, чем среды для ARM-микроконтроллеров (например, STM32CubeIDE). Однако для простых и массовых применений AVR остаются оптимальным выбором.

Источники

  • Microchip Technology. «AVR Instruction Set Manual». 2020.
  • Atmel Corporation. «AVR Architecture Overview». 2015.
  • Барри, П. «Программирование микроконтроллеров AVR на языке C». 2012.
  • Майер, Дж. «Микроконтроллеры AVR: архитектура, программирование, применение». 2018.
  • Официальный сайт Microchip Technology (раздел AVR).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →