AVR
AVR | |
---|---|
![]() | |
![]() Микроконтроллер ATmega328P в составе консоли MAKERbuino. | |
Разработчик |
ранее Microchip |
Разрядность | 8 бит |
Представлена | 1996 год[1] |
Тип | гарвардская архитектура |
![]() |
AVR — это семейство восьмибитных
Микроконтроллеры этого семейства нашли широкое применение во встраиваемых системах. Они часто встречаются в проектах энтузиастов благодаря их популяризации платформой Arduino.
История
Идея разработки нового RISC-ядра принадлежит двум студентам Норвежского университета естественных и технических наук из города Тронхейм — Альфу Богену (Alf-Egil Bogen) и Вегарду Воллену (Vegard Wollen). В 1995 году Боген и Воллен решили предложить американской корпорации Atmel, которая была известна своими чипами с Flash-памятью, выпускать новый 8-битный RISC-микроконтроллер и снабдить его Flash-памятью для программ на одном кристалле с вычислительным ядром.
Идея была одобрена компанией и было принято решение незамедлительно инвестировать в данную разработку. В конце 1996 года был выпущен опытный микроконтроллер AT90S1200, а во второй половине 1997 г. корпорация Atmel приступила к серийному производству нового семейства микроконтроллеров, к их рекламной и технической поддержке. К 2003 году компания продала 500 миллионов микроконтроллеров AVR[2]. В 2005 году, на базе микроконтроллеров семейства AVR была построена платформа Arduino.
Новое ядро было запатентовано и получило название AVR. Существуют различные мнения насчёт того, что означает это название[1]. Одним из вариантом является "Advanced Virtual RISC", а другим - "Alf and Vegard RISC".
Описание архитектуры
Микроконтроллеры 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[3] различных команд.
Большинство команд занимает только 1 ячейку памяти (16 бит) и выполняются за 1 такт.
Всё множество команд микроконтроллеров AVR можно разбить на несколько групп:
- команды логических операций;
- команды арифметических операций и команды сдвига;
- команды операции с битами;
- команды пересылки данных;
- команды передачи управления;
- команды управления системой.
Управление периферийными устройствами осуществляется через адресное пространство данных. Для удобства существуют «сокращённые команды» IN/OUT.
Семейства микроконтроллеров
Стандартные семейства:
- tinyAVR (ATtinyxxx):
- Флеш-память до 16 КБ; SRAM до 512 Б; EEPROM до 512 Б;
- Число линий ввода-вывода 4-18 (общее количество выводов 6-32);
- Ограниченный набор периферийных устройств.
- megaAVR (ATmegaxxx):
- Флеш-память до 256 КБ; SRAM до 16 КБ; EEPROM до 4 КБ;
- Число линий ввода-вывода 23-86 (общее количество выводов 28-100);
- Аппаратный умножитель;
- Расширенная система команд и периферийных устройств.
- XMEGA AVR (ATxmegaxxx):
- Флеш-память до 384 КБ; SRAM до 32 КБ; EEPROM до 4 КБ;
- Четырёхканальный DMA-контроллер;
- Инновационная система обработки событий.
Как правило, цифры после префикса обозначают объём встроенной
На основе стандартных семейств выпускаются микроконтроллеры, адаптированные под конкретные задачи:
- со встроенными интерфейсами LCD;
- со встроенным радиоприёмопередатчиком — серии ATAxxxx, ATAMxxx;
- для управления электродвигателями — серия AT90PWMxxxx;
- для автомобильной электроники;
- для осветительной техники.
Кроме указанных выше семейств, ATMEL выпускает 32-разрядные микроконтроллеры семейства AVR32, которое включает в себя подсемейства AT32UC3 (тактовая частота до 66 МГц) и AT32AP7000 (тактовая частота до 150 МГц).
Версии контроллеров
AT (mega/tiny)xxx — базовая версия. Существуют и другие версии:
- ATxxxL — версии контроллеров, работающих на пониженном (Low) напряжении питания (2,7 В).
- ATxxxV — версии контроллеров, работающих на низком напряжении питания (1,8 В).
- ATxxxP — версии с малым потреблением тока (до 100 нА в режиме Power-down), применена технология picoPower (анонсированы в июле 2007), повыводно и функционально совместимы с предыдущими версиями.
- ATxxxA — уменьшен ток потребления, перекрывается весь диапазон тактовых частот и напряжений питания двух предыдущих версий (также, в некоторых моделях, добавлены новые возможности и новые регистры, но сохранена полная совместимость с предыдущими версиями). Микроконтроллеры «А» и «не-А» обычно имеют одинаковую сигнатуру, что вызывает некоторые трудности, так как Fuse-bit’ы отличаются.
Номер модели дополняется индексом, указывающим вариант исполнения. Цифры (8, 10, 16, 20) перед индексом означают максимальную
Первая буква индекса означает вариант корпуса:
- АТxxx-P — корпус DIP
- АТxxx-A — корпус TQFP
- АТxxx-J — корпус PLCC
- АТxxx-M — корпус MLF
- АТ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-xC — коммерческий температурный диапазон (0 °C — 70 °C)
- АТxxx-xA — температурный диапазон −20 °C — +85 °C, с использованием бессвинцового припоя
- АТxxx-xI — индустриальный температурный диапазон (-40 °C — +85 °C)
- АТxxx-xU — индустриальный температурный диапазон (-40 °C — +85 °C), с использованием бессвинцового припоя
- АТxxx-xH — индустриальный температурный диапазон (-40 °C — +85 °C), с использованием NiPdAu
- АТxxx-xN — расширенный температурный диапазон (-40 °C — +105 °C), с использованием бессвинцового припоя
- АТxxx-xF — расширенный температурный диапазон (-40 °C — +125 °C)
- АТxxx-xZ — автомобильный температурный диапазон (-40 °C — +125 °C)
- АТxxx-xD — расширенный автомобильный температурный диапазон (-40 °C — +150 °C)
последняя буква R означает упаковку в ленты (Tape & Reel) для автоматизированных систем сборки.
Устройства ввода-вывода
Микроконтроллеры данного семейства имеют развитую периферию[4]:
- До 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 В).
- программируемый коэффициент усиления перед
- Различные последовательные интерфейсы, включая:
- двухпроводной интерфейс TWI, совместимый с I²C;
- универсальный синхронно/асинхронный приёмопередатчик USART;
- синхронный последовательный порт Serial Peripheral Interface (SPI).
- USB серия AT90USBxxxx.
- CAN серия AT90CANxxx.
- LCDсерии ATmega169 и ATmega329.
- Датчики температуры ATtiny25, ATtiny45, ATtiny85.
- Почти все (за исключением некоторых ранних моделей ATtiny, у которых перепрограммирование идёт по особому интерфейсу) поддерживают внутрисхемное программирование (ISP) через последовательный интерфейс SPI. Многие микроконтроллеры поддерживают альтернативное последовательное или параллельное программирование с использованием высокого напряжения, для случаев, если fuse-регистры были настроены так, что обычное программирование стало недоступно.
- Поддержка самопрограммирования, при котором основная программа может изменить часть своего кода.
- Поддержка загрузки основной программы с помощью защищённой от перезаписи подпрограммы (bootloader). Код основной программы обычно принимается через один из портов микроконтроллера с использованием одного из стандартных протоколов.
- Ряд режимов пониженного энергопотребления.
Средства разработки
Аппаратные средства разработки



Официальные средства разработки для 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
Также существует много сторонних средств, особенно любительских.
Программные средства разработки
- Algorithm Builder — алгоритмическая среда разработки программного обеспечения для микроконтроллеров с архитектурой AVR (последнее обновление в 2010 г).
- AVR-Eclipse — плагин для среды разработки Eclipse, позволяющий разрабатывать программы на C/C++ и ассемблере, программировать и отлаживать контроллеры, используя внешний набор инструментов (Atmel AVR Toolchain, WinAVR)
- avra — консольный макро-ассемблер для 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.
- IAR AVR — коммерческая среда разработки для микроконтроллеров AVR.
- Basic-подобном языке программирования.
- CodeVisionAVR — компилятор C и программатор — CVAVR, генератор начального кода.
- Proteus— симулятор электрических цепей, компонентов, включая различные МК и другое периферийное оборудование.
Также архитектура AVR позволяет применять
См. также
Примечания
- ↑ 1 2 Definition of AVR (англ.). PCMAG. Дата обращения: 17 августа 2024. Архивировано 17 августа 2024 года.
- ↑ Atmel press release. "Atmel's AVR Microcontroller Ships 500 Million Units" Архивная копия от 23 июня 2018 на Wayback Machine.
- ↑ Архивированная копия . Дата обращения: 28 января 2021. Архивировано 6 мая 2021 года.
- ↑ Не все периферийные устройства могут быть включены программно. Некоторые из них предварительно должны быть активированы битами в регистрах Fuses, которые могут быть изменены только программатором.
- ↑ AVR32737: AVR32 AP7 Linux Getting Started (февраль 2008). Дата обращения: 24 апреля 2017. Архивировано 29 марта 2017 года.
![]() | В статье не хватает ссылок на источники (см. рекомендации по поиску). |
Ссылки
- Atmel AVR 8- and 32-bit Microcontrollers на сайте компании Atmel
- AVR в каталоге ссылок Curlie (dmoz)