Логотип 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. Существует несколько трактовок данной аббревиатуры. Кто-то утверждает, что это Advanced Virtual RISC, другие полагают, что не обошлось здесь без Alf Egil Bogen Vegard Wollan RISC.

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

[править | править код]

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

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

[править | править код]

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

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

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

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

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

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

[править | править код]

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

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

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

Кроме указанных выше семейств, 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) для автоматизированных систем сборки.

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

[править | править код]

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

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

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

[править | править код]

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

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

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

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

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

[править | править код]

Свободные

[править | править код]

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

[править | править код]

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

См. также

[править | править код]

Примечания

[править | править код]
  1. Архивированная копия. Дата обращения: 28 января 2021. Архивировано 6 мая 2021 года.
  2. AVR32737: AVR32 AP7 Linux Getting Started (февраль 2008). Дата обращения: 24 апреля 2017. Архивировано 29 марта 2017 года.

Ссылки

[править | править код]