Обзор микроконтроллеров AVR

Добавлено 3 сентября 2011 в 10:24

AVR — семейство восьмибитных микроконтроллеров компании Atmel. Год разработки — 1996.

Содержание

История создания архитектуры AVR

Идея разработки нового RISC-ядра принадлежит двум студентам Norwegian University of Science and Technology (NTNU) из норвежского города Тронхейма (Trondheim) — Альфу Богену (Alf-Egil Bogen) и Вегарду Воллену (Vegard Wollen). В 1995 году Боген и Воллен решили предложить американской корпорации Atmel, которая была известна своими чипами с Flash-памятью, выпускать новый 8-битный RISC-микроконтроллер и снабдить его Flash-памятью для программ на одном кристалле с вычислительным ядром.

Идея была одобрена Atmel Corp., и было принято решение незамедлительно инвестировать в данную разработку. В конце 1996 года был выпущен опытный микроконтроллер AT90S1200, а во второй половине 1997-го корпорация Atmel приступила к серийному производству нового семейства микроконтроллеров, к их рекламной и технической поддержке.

Новое ядро было запатентовано и получило название AVR. Существует несколько трактовок данной аббревиатуры. Кто-то утверждает, что это Advanced Virtual RISC, другие полагают, что не обошлось здесь без Alf Egil Bogen Vegard Wollan RISC.

Описание архитектуры

Микроконтроллеры AVR имеют гарвардскую архитектуру (программа и данные находятся в разных адресных пространствах) и систему команд, близкую к идеологии RISC. Процессор AVR имеет 32 8-битных регистра общего назначения, объединённых в регистровый файл. В отличие от «идеального» RISC, регистры не абсолютно ортогональны:

  • три «сдвоенных» 16-битных регистра-указателя X (r26:r27), Y (r28:r29) и Z (r30:r31);
  • некоторые команды работают только с регистрами r16..r31;
  • результат умножения (в тех моделях, в которых есть модуль умножения) всегда помещается в r0:r1.

Система команд

Система команд микроконтроллеров AVR весьма развита и насчитывает в различных моделях от 90 до 133 различных инструкций. Большинство команд занимает только 1 ячейку памяти (16 бит). Большинство команд выполняется за 1 такт.

Всё множество команд микроконтроллеров AVR можно разбить на несколько групп:

  • команды логических операций;
  • команды арифметических операций и команды сдвига;
  • команды операции с битами;
  • команды пересылки данных;
  • команды передачи управления;
  • команды управления системой.

Управление периферийными устройствами осуществляется через адресное пространство данных. Для удобства существуют «сокращённые команды» IN/OUT.

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

Стандартные семейства:

  • tinyAVR:
    • флеш-память 16 Кб, SRAM 512 б, EEPROM 512 б;
    • число линий ввод-вывода 4-18 (общее количество выводов 6-32);
    • ограниченный набор периферийных устройств;
  • megaAVR:
    • флеш-память 256 Кб, SRAM 8 Кб, EEPROM 4 Кб;
    • число линий ввода-вывода 23-86 (общее количество выводов 20-100);
    • аппаратный умножитель;
    • расширенная система команд и периферийных устройств;
  • XMEGA AVR:
    • флеш-память 384 Кб, SRAM 32 Кб, EEPROM 4 Кб;
    • четырёхканальный DMA-контроллер;
    • Инновационная система обработки событий.

Примечание: здесь приведены максимальные значения объёмов памяти.

На основе стандартных семейств выпускаются микроконтроллеры, адаптированные под конкретные приложения:

  • со встроенными интерфейсами USB, CAN, контроллером LCD;
  • со встроенным радиоприёмо-передатчиком — серии ATAхxxx, ATAMxxx;
  • для управления электродвигателями — серия AT90PWMxxxx;
  • для автомобильной электроники;
  • для осветительной техники.

Версии контроллеров

ATmega/tinyXXX
Базовая версия.
ATXXXL
Версии контроллеров, работающих на пониженном (Low) напряжении питания, обычно 1,8 или 2,7 В.
ATXXXP
Малопотребляющие версии (до 100 нА в режиме Power-down), применена технология picoPower (анонсированы в июле 2007), повыводно и функционально совместимы с предыдущими версиями.
ATXXXA
Уменьшен ток потребления, перекрывается весь диапазон тактовых частот и напряжений питания двух предыдущих версий (также, в некоторых моделях, добавлены новые возможности и новые регистры, но сохранена полная совместимость с предыдущими версиями). Микроконтроллеры «А» и «не-А» с точки зрения программатора ничем не отличаются.
АТmegaXXX-PI
Корпус DIP.
АТmegaXXX-PU
Корпус DIP, бессвинцовый (Pb-free) припой.
АТmegaXXX-AI
Корпус TQFP.
АТmegaXXX-AU
Корпус TQFP, бессвинцовый (Pb-free) припой.

Цифры 8/10/16/20 перед индексом означают максимальную частоту, на которой микроконтроллер может стабильно работать при нормальном для него напряжении питания.

Устройства ввода/вывода МК

МК AVR имеют развитую периферию:

  • многофункциональные, двунаправленные GPIO порты ввода/вывода со встроенными подтягивающими резисторами. Конфигурация портов в/в задаётся программно;
  • в качестве источника тактовых импульсов может быть выбран:
    • кварцевый резонатор;
    • внешний тактовый сигнал;
    • внутренний RC-генератор (частота 1, 2, 4, 8 МГц);
  • внутренняя флеш-память команд до 256 KБ (не менее 10 000 циклов перезаписи);
  • отладка программ осуществляется с помощью интерфейсов JTAG или debugWIRE:
    • сигналы JTAG (TMS, TDI, TDO, и TCK) мультиплексированы на порт ввода/вывода. Режим работы — JTAG или порт — задаётся соответствующим битом в регистре fuses. МК AVR поставляются с включённым интерфейсом JTAG;
  • внутренняя EEPROM данных до 4 КБ (100 000 циклов);
  • внутренняя SRAM до 8 KБ время доступа 1 такт;
  • внешняя память объёмом до 64 КБ (Mega8515 и Mega162);
  • таймеры c разрядностью 8, 16 бит;
  • ШИМ-модулятор (PWM) 8-, 9-, 10-, 16-битный;
  • аналоговые компараторы;
  • АЦП (ADC) с дифференциальными входами, разрядность 10 бит (12 для XMEGA AVR):
    • программируемый коэффициент усиления перед АЦП 1, 10 и 200;
    • опорное напряжение 2,56 В;
  • различные последовательные интерфейсы, включая:
    • двухпроводной интерфейс TWI, совместимый с I²C;
    • универсальный синхронно/асинхронный приёмопередатчик UART/USART;
    • синхронный последовательный порт Serial Peripheral Interface (SPI);
  • USB серия AT90USBxxxx;
  • CAN серия AT90CANxxx;
  • LCD серии ATmega169 и ATmega329;
  • Датчики температуры ATtiny25, ATtiny45, ATtiny85;

Примечание: не все периферийные устройства могут быть включены программно. Бит в регистре fuses может быть изменён только программатором.

Средства разработки

Свободные

AVR-GCC
Порт GCC (компилятор) для AVR. Есть возможность интеграции с AVR Studio и Eclipse (AVR Eclipse Plugin).
SimulAVR
Симулятор ядра микроконтроллера AVR
KontrollerLab
IDE + работа с RS-232 + отладчик.
Code::Blocks
IDE.
AVR-GDB
Порт GDB (отладчик) для AVR.
DDD
Графический интерфейс к avr-gdb.
WinAVR
Комплект разработки, включающий в себя: Programmers Notepad — программистский блокнот, компиляторный комплект AVR-GCC , avrdude для прошивки и avr-gdb для отладки (раздел на RadioProg.RU).
Avrdude
Популярное средство для прошивки микроконтроллеров.
V-USB
Программная реализация протокола USB для микроконтроллеров AVR.
Загрузчики (bootloader) для микроконтроллеров AVR
Технология, позволяющая использовать стандартные интерфейсы (RS-232, CAN, USB, I2C и проч.) для загрузки программы в кристалл AVR.
PonyProg
Универсальный программатор, подключение через COM-порт, LPT-порт (подерживается и USB эмулятор COM-порта) поддерживает МК AVR, PIC и др.

Проприетарные

AVR Studio
IDE + ассемблер + отладчик. Freeware.
CodeVisionAVR
Компилятор C и программатор — CVAVR + генератор начального кода.
ICC AVR
Компилятор C + генератор начального кода.
AtmanAvr
Компилятор C + отладчик + генератор начального кода.
IAR AVR
IDE C/C++. сайт разработчика.
VMLAB
Симулятор AVR.
Proteus
Мощнейший симулятор электрических цепей, компонентов, включая различные МК и др. периферийное оборудование.
Bascom AVR
Компилятор Basic + отладчик + программатор.
E-LAB AVRco
Компилятор Pascal.
MikroE
Можество компиляторов для разных языков.
Algorithm Builder
Визуальная среда разработки программ для AVR в виде блок-схем включает также эмулятор и программатор. Используемый язык программирования — псевдоассемблер. Freeware.
ForthInc Forth-Compiler
Компилятор языка Forth.
MPE Forth-Compiler
Компилятор языка Forth.
AVReal
Программатор, подключение LPT (практически любой адаптер, в том числе совместим с программатором в CodeVisionAVR) либо USB (адаптеры на основе FT2232C/L/D, FT2232H, FT4232H). Freeware.

Также архитектура AVR позволяет применять операционные системы при разработке приложений, например FreeRTOS, uOS, scmRTOS, ChibiOS/RT, AvrX (ядро реального времени).

Сообщить об ошибке