AVR mikrovaldiklio architektūrą 1996 m. sukūrė "Atmel". Ji pagrįsta Harvardo mikrovaldiklio architektūra. AVR buvo viena pirmųjų mikrovaldiklių šeimų, kurioje programoms saugoti buvo naudojama mikroschemoje esanti "flash" atmintis, o ne vienkartinė programuojama ROM, EPROM ar EEPROM, kurias tuo metu naudojo kiti mikrovaldikliai. Flash atmintis leido daugkartinai perrašyti programinę įrangą ir gerokai palengvino tiek vystymą, tiek masinę gamybą.

Daugelis žmonių mano, kad AVR reiškia Alf (Egil Bogen) ir Vegard (Wollan) "Risc" procesorių — tai pagarbos ženklas kūrėjams ir populiari paaiškinimo versija. Oficialiai Atmel vardą AVR interpretuodavo kaip RISC tipo branduolį, tačiau prasmė nebuvo vienareikšmiškai apibrėžta.

Architektūros pagrindai ir veikimas

AVR yra RISC tipo mikrovaldiklis su atskira programine ir duomenų atmintimi (Harvard architektūra). Svarbiausi bruožai:

  • 32 bendrosios paskirties registrai (R0–R31), tiesiogiai sujungti su ALU — tai leidžia greitai atlikti operacijas be papildomų atminties prieigos ciklų.
  • Daugelis instrukcijų vykdomos per vieną klavišo pulsą (1 taktą), nes AVR turi dviejų fazių (fetch/execute) vamzdelį (pipeline), leidžiantį nuolat vykdyti instrukcijas greitu taktavimu.
  • Instrukcijų žodžio ilgis dažniausiai 16 bitų; kai kurios instrukcijos užima 32 bitus (pvz., ilgesnės ar sudėtingesnės operacijos).
  • Harvardo architektūra leidžia vienu metu skaityti instrukciją iš programinės atminties ir pasiekti duomenis iš duomenų atminties, todėl padidėja našumas.

Palyginimas su MCS-51 (8051)

Senoji MCS-51 (8051) architektūra dažnai naudoja ilgesnius mašininius ciklus (vienas mašininis ciklas gali užtrukti kelis takto ciklus; klasikinis 8051 – 12 takto ciklų vienam mašininiam ciklui), todėl daug instrukcijų reikalauja kelių taktų. AVR mikrovaldikliuose dauguma instrukcijų atliekamos vienu taktu, todėl per taktą gaunamas žymiai didesnis našumas lyginant su tradiciniu 8051 dizainu.

Instrukcijos ir aparatūros ypatybės

  • Instrukcijų rinkinys: RISC tipo, paprastas ir efektyvus; daugiausia 16 bitų ilgio instrukcijos leidžia kompaktišką programos dydį ir greitą vykdymą.
  • ALU ir registrų failas: 32 registrai, integruoti su ALU, suteikia galimybę pasiekti du registrus vienu metu ir atlikti operaciją per vieną ciklą.
  • Atminties tipai: programinė atmintis – flash; duomenų atmintis – SRAM; nešiojama/ilgaamžė konfigūracinė atmintis – EEPROM; taip pat yra fuses/lock bit’ai konfigūravimui.
  • Periferialai: timers/counters, ADC, DAC (kai kuriuose modeliuose), UART/USART, SPI, I2C (TWI), PWM kanalai, analoginiai komparatoriai.
  • Interruption handling: aparatinės pertraukos su prioritetais, greitas reagavimas — daugumoje atvejų pertraukos aptarnavimas vykdomas labai mažai užtrunkant CPU.
  • Energetinis valdymas: keli energijos taupymo režimai (sleep modes), galimybė veikti mažais taktiniais dažniais bei naudoti vidinį RC osciliatorių arba išorinį kristalą.

AVR šeimos

AVR produkto šeimos yra skirstomos pagal pajėgumą ir paskirtį:

  • tinyAVR – labai mažos galios ir talpos, paprastai skirtos paprastiems valdikliams su keliais IO ir minimaliu periferijos rinkiniu.
  • megaAVR – populiariausi, su daugiau IO, periph., didesne flash/SRAM atmintimi (pvz., ATmega serija, plačiai naudojama Arduino platformoje, pvz., ATmega328P).
  • XMEGA – pažangesni modeliai su didesniu našumu, daugiau periferių ir geresne energijos valdymo bei ADC/PWM funkcionalumu.
  • AVR32 – Atmel sukurtas 32 bitų RISC branduolys, kuris yra atskira šeima nuo tradicinio 8 bitų AVR; jis skirtas aukštesnės spartos pritaikymams.

Programavimas ir vystymas

AVR mikrovaldikliai turi daug palaikymo įrankių ir ekosistemų, todėl jie populiarūs tiek pramonėje, tiek tarp hobistų:

  • Įrankiai: Microchip Studio (anksčiau Atmel Studio), avr-gcc (GNU toolchain), avrdude ir kt.
  • Programatoriai ir derintuvai: ISP (In-System Programming) prievadai, JTAG, debugWIRE; populiarūs programatoriai – AVRISP, USBasp, Atmel-ICE.
  • Ekosistema: platus bibliotekų rinkinys, pavyzdžiai, dokumentacija ir bendruomenės palaikymas. Arduino platforma dar labiau išpopuliarino AVR mikrovaldiklius tarp pradedančiųjų ir maker'ių.

Tipinės taikymo sritys

  • Embedded įrenginiai ir valdikliai
  • Oro, pramoninė automatikos įranga ir vartojimo elektronika
  • Švietimas ir prototipavimas (ypač dėl Arduino)
  • Maži energijos sąnaudų sprendimai ir baterijos pagrindu veikiantys prietaisai

Privalumai ir trūkumai

  • Privalumai: paprasta RISC architektūra, greitas vykdymas, 32 registrai, plati įrankių ir bendruomenės parama, flash atmintis perrašymui.
  • Trūkumai: dauguma 8 bitų AVR modelių riboti atmintimi ir adresavimo galimybėmis lyginant su modernesnėmis 32 bitų architektūromis; didesnės spartos ar atminties reikalaujantiems projektams tinka XMEGA arba kitų gamintojų 32 bitų procesoriai.

Apibendrinant, AVR mikrovaldikliai pasižymi paprasta ir efektyvia RISC architektūra, greitu vykdymu daugeliui instrukcijų ir stipria ekosistema, todėl jie ir šiandien plačiai naudojami tiek mokymuisi, tiek realiems pramoniniams sprendimams.