Interested Article - AVR

Логотип AVR
Atmel AVR ATmega8 в корпусе DIP
Atmel AVR ATmega169V в корпусе MLF

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

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

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

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

Новое ядро было запатентовано и получило название AVR . Существует несколько трактовок данной аббревиатуры. Кто-то утверждает, что это A dvanced V irtual R ISC, другие полагают, что не обошлось здесь без A lf Egil Bogen V egard Wollan R ISC.

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

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

  • Некоторые команды работают только с регистрами r16…r31. К ним относятся команды, работающие с непосредственным операндом: ANDI/CBR, ORI/SBR, CPI, LDI, LDS (16-бит), STS (16-бит), SUBI, SBCI, а также SER и MULS;
  • Команды, увеличивающие и уменьшающие 16-битное значение (в тех моделях, где они доступны) с непосредственным операндом (ADIW, SBIW), работают только с одной из пар r25:r24, r27:r26 (X), r29:r28 (Y) или r31:r30 (Z);
  • Команда копирования пары регистров (в тех моделях, где доступна) работает только с соседними регистрами, начинающимися с нечётного (r1:r0, r3:r2, …, r31:r30);
  • Результат умножения (в тех моделях, в которых есть модуль умножения) всегда помещается в r1:r0. Также только эта пара используется в качестве операндов для команды самопрограммирования (где доступна);
  • Некоторые варианты команд умножения принимают в качестве аргументов только регистры из диапазона r16…r23 (FMUL, FMULS, FMULSU, MULSU).

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

Система команд микроконтроллеров AVR весьма развита и насчитывает в различных моделях от 90 до 135 различных инструкций.

Большинство команд занимает только 1 ячейку памяти (16 бит).

Большинство команд выполняется за 1 такт .

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

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

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

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

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

  • tinyAVR ( ATtiny xxx):
  • megaAVR ( ATmega xxx):
    • Флеш-память до 256 КБ; SRAM до 16 КБ; EEPROM до 4 КБ;
    • Число линий ввода-вывода 23-86 (общее количество выводов 28-100);
    • Аппаратный умножитель;
    • Расширенная система команд и периферийных устройств.
  • XMEGA AVR ( ATxmega xxx):
    • Флеш-память до 384 КБ; SRAM до 32 КБ; EEPROM до 4 КБ;
    • Четырёхканальный DMA -контроллер;
    • Инновационная система обработки событий.

Как правило, цифры после префикса обозначают объём встроенной flash-памяти (в КБ) и модификацию контроллера. А именно — максимальная степень двойки, следующая за префиксом, обозначает объём памяти, а оставшиеся цифры определяют модификацию (напр., ATmega128 — объём памяти 128 КБ; ATmega168 — объём памяти 16 КБ, модификация 8; ATtiny44 и ATtiny45 — память 4 КБ, модификации 4 и 5 соответственно). [ источник не указан 4162 дня ]

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

Кроме указанных выше семейств, ATMEL выпускает 32-разрядные микроконтроллеры семейства AVR32 , которое включает в себя подсемейства AT32UC3 (тактовая частота до 66 МГц) и AT32AP7000 (тактовая частота до 150 МГц).

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

AT (mega/tiny)xxx — базовая версия.
ATxxx L — версии контроллеров, работающих на пониженном (Low) напряжении питания (2,7 В).
ATxxx V — версии контроллеров, работающих на низком напряжении питания (1,8 В).
ATxxx P — малопотребляющие версии (до 100 нА в режиме Power-down), применена технология picoPower (анонсированы в июле 2007), повыводно и функционально совместимы с предыдущими версиями.
ATxxx A — уменьшен ток потребления, перекрывается весь диапазон тактовых частот и напряжений питания двух предыдущих версий (также, в некоторых моделях, добавлены новые возможности и новые регистры, но сохранена полная совместимость с предыдущими версиями). Микроконтроллеры «А» и «не-А» обычно имеют одинаковую сигнатуру, что вызывает некоторые трудности, так как Fuse-bit’ы отличаются.

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

Первая буква индекса означает вариант корпуса:

АТxxx- P — корпус DIP
АТxxx- A — корпус TQFP
АТxxx- J — корпус PLCC
АТxxx- M — корпус
АТxxx- MA — корпус UDFN/USON
АТxxx- C — корпус CBGA
АТxxx- CK — корпус LGA
АТxxx- S — корпус EIAJ SOIC
АТxxx- SS — узкий корпус JEDEC SOIC
АТxxx- T — корпус TSOP
АТxxx- TS — корпус SOT-23 (ATtiny4/5/9/10)
АТxxx- X — корпус TSSOP

Следующая буква означает температурный диапазон и особенности изготовления:

АТxxx-x C — коммерческий температурный диапазон (0 °C — 70 °C)
АТxxx-x A — температурный диапазон −20 °C — +85 °C, с использованием бессвинцового припоя
АТxxx-x I — индустриальный температурный диапазон (-40 °C — +85 °C)
АТxxx-x U — индустриальный температурный диапазон (-40 °C — +85 °C), с использованием бессвинцового припоя
АТxxx-x H — индустриальный температурный диапазон (-40 °C — +85 °C), с использованием NiPdAu
АТxxx-x N — расширенный температурный диапазон (-40 °C — +105 °C), с использованием бессвинцового припоя
АТxxx-x F — расширенный температурный диапазон (-40 °C — +125 °C)
АТxxx-x Z — автомобильный температурный диапазон (-40 °C — +125 °C)
АТxxx-x D — расширенный автомобильный температурный диапазон (-40 °C — +150 °C)

последняя буква R означает упаковку в ленты (Tape & Reel) для автоматизированных систем сборки.

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

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

  • До 86 многофункциональных двунаправленных GPIO линий ввода-вывода, объединённых в 8-битные порты ввода-вывода . В зависимости от программно-задаваемой конфигурации регистров могут независимо друг от друга работать в режиме «сильного» драйвера, выдающего или принимающего (на «землю») ток до 40 м А , что достаточно для подключения светодиодных индикаторов. Любой из выводов портов может быть сконфигурирован на «ввод» либо в свободном состоянии, либо с использованием встроенного подтягивающего (на плюс) резистора.
  • До 3 внешних источников прерываний (по фронту, срезу или уровню) и до 32 — по изменению уровня на входе.
  • В качестве источника тактовых импульсов может быть выбран:
    • керамический или кварцевый резонатор (не у всех моделей);
    • внешний тактовый сигнал;
    • калиброванный внутренний RC-генератор (частота 1, 2, 4, 8 МГц, а также, для некоторых моделей ATtiny — 4,8, 6,4, 9,6 МГц и 128 кГц).
  • Внутренняя флеш-память команд до 256 KБ (не менее 10 000 циклов перезаписи).
  • Отладка программ осуществляется с помощью интерфейсов JTAG или debugWIRE :
    • сигналы JTAG (TMS, TDI, TDO и TCK) мультиплексированы на порт ввода-вывода. Режим работы — JTAG или порт — задаётся соответствующим битом в регистре fuses. МК AVR поставляются с включённым интерфейсом JTAG.
  • Внутренняя память данных EEPROM до 4 КБ (ATmega/ATxmega)/512 байт (ATtiny) (до 100 000 циклов перезаписи).
  • Внутренняя память SRAM до 32 KБ (ATxmega)/16 Кб (ATmega)/1 Кб (ATtiny) c временем доступа 2 такта.
  • Внешняя память объёмом до 64 КБ (ATmega8515, ATmega162, ATmega640, ATmega641, ATmega1280, ATmega1281, ATmega2560, ATmega256).
  • Таймеры c разрядностью 8, 16 бит.
  • ШИМ -модулятор (PWM) 8-, 9-, 10-, 16-битный.
  • Аналоговые компараторы.
  • АЦП (ADC) с дифференциальными входами, разрядность 8 (ATtiny)/10 (ATtiny/ATmega)/12 (ATxmega) бит:
    • программируемый коэффициент усиления перед АЦП 1, 10 и 200 (в дифференциальном режиме);
    • в качестве опорного напряжения могут выступать: напряжение питания, внешнее напряжение или внутреннее некалиброванное опорное напряжение около 2,56 В (для моделей, имеющих минимальное напряжение питания от 2,7 В и выше) либо 1,1 В (с минимальным напряжением питания 1,8 В ).
  • Различные последовательные интерфейсы, включая:
    • двухпроводной интерфейс , совместимый с I²C ;
    • универсальный синхронно/асинхронный приёмопередатчик UART / USART ;
    • синхронный последовательный порт Serial Peripheral Interface (SPI).
  • USB серия AT90USBxxxx.
  • CAN серия AT90CANxxx.
  • LCD серии и .
  • Датчики температуры , , .
  • Почти все (за исключением некоторых ранних моделей ATtiny, у которых перепрограммирование идёт по особому интерфейсу) поддерживают внутрисхемное программирование (ISP) через последовательный интерфейс SPI . Многие микроконтроллеры поддерживают альтернативное последовательное или параллельное программирование с использованием высокого напряжения, для случаев, если fuse-регистры были настроены так, что обычное программирование стало недоступно.
  • Поддержка самопрограммирования, при котором основная программа может изменить часть своего кода.
  • Поддержка загрузки основной программы с помощью защищённой от перезаписи подпрограммы (bootloader). Код основной программы обычно принимается через один из портов микроконтроллера с использованием одного из стандартных протоколов.
  • Ряд режимов пониженного энергопотребления.

Примечание: не все периферийные устройства могут быть включены программно. Некоторые из них предварительно должны быть активированы битами в регистрах Fuses, которые могут быть изменены только программатором.

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

Аппаратные средства разработки

Плата разработчика Atmel STK500
AVR Dragon с интерфейсом внутрисхемного программирования , а также добавленной ZIF-панелькой под ИМС
AVRISP mkII-ISP-Programmer от Atmel

Официальные средства разработки для AVR от Atmel:

  • STK600 starter kit
  • STK500 starter kit
  • STK200 starter kit
  • AVRISP and AVRISP mkII
  • AVR Dragon
  • USBasp — USB
  • JTAGICE mkI
  • JTAGICE mkII
  • JTAGICE3
  • ATMEL-ICE
  • AVR ONE!
  • Butterfly demonstration board
  • AT90USBKey
  • Raven wireless kit

Также существует много сторонних средств, особенно любительских.

Программные средства разработки

Свободные

  • — алгоритмическая среда разработки программного обеспечения для микроконтроллеров с архитектурой AVR (последнее обновление в 2010 г).
  • AVR-Eclipse — плагин для среды разработки Eclipse , позволяющий разрабатывать программы на C/C++ и ассемблере, программировать и отлаживать контроллеры, используя внешний набор инструментов (Atmel AVR Toolchain, WinAVR)
  • — консольный макро-ассемблер для Linux/MacOS.
  • Avrdude — средство для прошивки микроконтроллеров.
  • AVRDUDE_PROG 3.1 — визуальный редактор.
  • Code::Blocks — кроссплатформенная среда разработки.
  • DDD — графический интерфейс к avr-gdb.
  • eXtreme Burner — AVR — графический интерфейс для USBasp-based USB AVR программаторов.
  • Khazama AVR Programmer — графический интерфейс в Windows для USBasp и avrdude.
  • PonyProg — универсальный программатор через LPT-порт, COM-порт (поддерживается и USB-эмулятор COM-порта).
  • V-USB — программная реализация протокола USB для микроконтроллеров AVR.
  • WinAVR — программный пакет под Windows , включающий в себя компилятор, ассемблер, компоновщик и другие инструменты.
  • Zadig 2.3

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

  • Microchip Studio — бесплатная IDE от самой Microchip.
  • — коммерческая среда разработки для микроконтроллеров AVR.
  • Bascom-avr — среда разработки, основанная на Basic -подобном языке программирования.
  • CodeVisionAVR — компилятор C и программатор — CVAVR, генератор начального кода.
  • Proteus — симулятор электрических цепей, компонентов, включая различные МК и другое периферийное оборудование.

Также архитектура AVR позволяет применять операционные системы при разработке приложений, например, FreeRTOS , , ChibiOS/RT , ( C++ ), TinyOS , и др, а также Linux на AVR32 .

См. также

Примечания

  1. . Дата обращения: 28 января 2021. 6 мая 2021 года.
  2. (февраль 2008). Дата обращения: 24 апреля 2017. 29 марта 2017 года.

Ссылки

  • на сайте компании Atmel
  • в каталоге ссылок Curlie (dmoz)
Источник —

Same as AVR