Архитектурата на микроконтролера AVR е разработена от Atmel през 1996 г. Тя е базирана на харвардската архитектура на микроконтролера. AVR е една от първите фамилии микроконтролери, които използват вградена в чипа флаш памет за съхранение на програми, за разлика от еднократно програмируемите ROM, EPROM или EEPROM, използвани от други микроконтролери по това време. Вградената флаш памет позволява лесно презаписване на програмния код (in-system programming) и поддръжка на bootloader-и.

Името AVR често се обяснява като съкращение от Alf (Egil Bogen) и Vegard (Wollan)'s RISC processor — това отразява участието на двамата разработчици в създаването на архитектурата. AVR е RISC архитектура, проектирана за ефективно и бързо изпълнение на инструкции с минимален набор от тактови цикли.

Тази архитектура замества по-старата архитектура MCS-51 (8051). При MCS-51 един машинен цикъл често отнема 12 тактови цикъла и много инструкции изискват този цикъл, което прави изпълнението по-бавно при една и съща тактова честота. Микроконтролерите AVR (MCU) могат да изпълняват повечето инструкции в един машинен цикъл, а един машинен цикъл обикновено отнема само един тактов период — поради това производителността на AVR при една и съща тактова честота е значително по-висока в сравнение с класическите 8051-базирани решения.

Ядрото на повечето 8‑битови AVR устройства разполага с 32 регистъра с общо предназначение (R0–R31), които са директно свързани с ALU. Това позволява достъп до два независими регистъра и изпълнение на инструкция, използваща и двата, в рамките на един машинен цикъл. Регистровият файл може да се използва и като 16‑битови регистрови двойки за операции върху по-големи данни. Стекът се намира в данновата памет (SRAM), а програмната памет е отделна (харвардска архитектура), което позволява паралелно извличане на инструкции и достъп до данни.

Основни характеристики

  • RISC дизайн с кратък и оптимизиран набор от инструкции.
  • 32 общопредназначени 8‑битови регистъра (в стандартните 8‑битови AVR устройства).
  • Повечето инструкции се изпълняват за един такт; някои операции (например достъп до външна памет, CALL/RET, някои клонове) изискват повече тактове.
  • Вградена флаш памет за програми, отделна SRAM за данни и EEPROM за трайно съхранение на потребителски параметри (при много модели).
  • Хардуерни периферии: таймери/контролери, ADC, DAC (в определени серии), компаратори, PWM, серийни интерфейси (USART, SPI, I2C/TWI) и др.
  • Ниски енергийни режими и възможности за управление на консумацията.

Семейства и варианти

  • ATtiny — малки и икономични устройства с ограничен брой пинове и периферия, подходящи за прости задачи.
  • ATmega — най-популярното семейство (например ATmega328P в платформата Arduino), предлага повече флаш памет, SRAM и периферни възможности.
  • ATxmega — по‑модерни 8/16‑битови устройства с разширени периферии (DMA, повече ADC канали, по-висока тактова честота и др.).
  • AVR32 — 32‑битова RISC архитектура, разработена от Atmel (различна от класическите 8‑битови AVR и несъвместима на бинарно ниво с тях).

Памет и програмиране

Флаш паметта съхранява програмния код и обикновено поддържа in-system programming (ISP). Много AVR микроконтролери имат вграден EEPROM за дълготрайни настройки и SRAM за временни данни. За програмиране и отстраняване на грешки често се използват интерфейси като SPI (ISP), JTAG, debugWIRE и UPDI (при по-новите устройства).

Периферия и приложения

AVR устройствата се използват широко в вградени системи, електроника за домашна автоматизация, промишлени контролери, портативни уреди и учебни платформи (Arduino). Общите периферни модули включват:

  • Аналогово-цифрови преобразуватели (ADC) за четене на сензорни стойности.
  • Таймери/контролери за създаване на точни времеви интервали и PWM за управление на мотори и осветление.
  • UART/USART, SPI и I2C/TWI за комуникация с други микроконтролери и периферни устройства.
  • Вграден контрол на захранването и нискоенергийни режими за батерийно захранвани приложения.

Разработка и инструменти

За разработка се използват добре поддържани инструменти като AVR-GCC (отворен компилатор), Atmel/Microchip Studio (интегрирана среда за разработка), avrdude (за флашване) и различни хардуерни програматори/отладчици. Поради популярността на платформата Arduino има огромно количество библиотеки и примери, които улесняват бързото прототипиране.

Сравнение и производителност

Сравнено със стари 8‑битови архитектури (напр. MCS‑51), AVR предлага значително по-добра производителност при една и съща тактова честота поради индивидуално изпълнение на голяма част от инструкциите за един тактов цикъл и по-ефективно използване на регистровия файл. В практиката това води до по-ниска нужда от висока тактова честота за същото изпълнение на задача, по-малко консумация на енергия и по-прости времеви критични реализации.

В заключение, AVR микроконтролерите представляват балансирано решение между производителност, енергопотребление и леснота на разработка. Благодарение на простотата на архитектурата и богатия набор от периферия, те остават популярни в образованието и в многобройни реални приложения.