Mikrokontrolersko arhitekturo AVR je leta 1996 razvil Atmel. Temelji na harvardski arhitekturi mikrokrmilnikov, kjer sta ločeni pomnilniška prostora za program in podatke, kar omogoča hkratni prenos navodil in podatkov. AVR je bila ena prvih družin mikrokrmilnikov, ki je za shranjevanje programov uporabljala bliskovni pomnilnik na čipu v nasprotju z enkratno programirljivim pomnilnikom ROM, EPROM ali EEPROM, ki so jih takrat uporabljali drugi mikrokrmilniki. Uporaba flash pomnilnika je omogočila enostavnejše in cenejše programiranje ter razvoj, saj je bilo mogoče program večkrat spreminjati neposredno na ciljnem vezju.
Mnogi menijo, da ime AVR izhaja iz imen ustvarjalcev (Alf‑Egil Bogen in Vegard Wollan) kot kratica za "Alf and Vegard's RISC" — Atmel pa je to razlago večkrat potrdil kot del zgodovine imena. Ne gre za naključje: arhitektura je res zasnovana kot enostaven, hiter RISC tip procesorja.
Osnovne lastnosti in prednosti
- RISC (Reduced Instruction Set Computer): enostaven nabor ukazov z optimizacijo za hitro izvajanje.
- Harvardska arhitektura: ločen programski in podatkovni pomnilnik omogoča večjo prepustnost.
- Flash pomnilnik na čipu: enostavno programiranje in posodabljanje programske kode.
- 32 splošna namenska registrov: jedro vsebuje 32 registrov, neposredno povezanih z ALU, kar omogoča hiter dostop in izvajanje ukazov.
- En strojnicykl na takt: večina ukazov se izvede v enem taktu zaradi predpomnjenja navodil in pipelininga, zato je zmogljivost na takt bistveno višja kot pri starejših arhitekturah, kot je MCS-51 (8051), kjer en strojni cikel običajno obsega 12 taktov.
Arhitektura in delovanje
AVR je tipično 8-bitni mikrokontroler z možnostjo izvajanja tudi 16-bitnih in določenih 32-bitnih operacij s kombiniranjem registrov. Programski pomnilnik (flash) je običajno dostopen v besedah (word addressing), podatkovni pomnilnik (SRAM) pa je ločen. Jedro ima neposreden dostop do dveh registrov hkrati, kar omogoča binarne operacije in hitre aritmetične ukaze v enem ciklu. Nekatere izvedbe vključujejo tudi strojno množilko za hitrejše množenje.
Družine AVR
- tinyAVR – majhni in varčni čipi za enostavne aplikacije.
- megaAVR – najbolj razširjena družina z več periferijami in več pomnilnika (primeri: ATmega328P, uporabljen v platformi Arduino).
- XMEGA – naprednejše 8-bitne naprave z višjo zmogljivostjo perifernih enot, hitrejšim ADC in DMA.
- AVR32 – ločena 32-bitna arhitektura, ki ni združljiva z 8-bitnim AVR nizom ukazov (imenovana posebej AVR32).
Tipične periferije in funkcije
AVR mikrokontrolerji običajno vključujejo naslednje vgrajene funkcije: večkanalni ADC, PWM generatorji, več nastavljivih časovnikov/timerjev, UART, SPI, I2C (TWI), watchdog timer, več načinov varčevanja z energijo (sleep modes) in vmesnike za programiranje (ISP, JTAG ali drugačni načini). Te periferije omogočajo uporabo AVR v širokem spektru aplikacij od enostavnih senzorjev do kompleksnih vgrajenih sistemov.
Razvojno orodje in programiranje
Za razvoj za AVR obstaja bogat ekosistem orodij: odprtokodni avr-gcc (kompilator), avrdude (orodje za nalaganje preko ISP), ter komercialno brezplačno okolje Microchip Studio (prej Atmel Studio). Programiranje naprav se običajno izvaja preko ISP (In-System Programming), preko bootloaderja ali z JTAG/PDI v primerih naprednejših modelov. Po prevzemu Atmela s strani Microchip Technology leta 2016 se podpora in razvoj orodij nadaljujeta v okviru Microchipovega okolja.
Uporabe in primeri
AVR mikrokontrolerji so priljubljeni zaradi enostavnosti uporabe, nizke cene in široke podpore v skupnosti. Najbolj znan primer je platforma Arduino, ki temelji na AVR čipih (npr. ATmega328P), kar je močno pospešilo njihovo uporabo v hobijih, izobraževanju in prototipiranju. Poleg tega so AVR-ji prisotni v industrijskih krmilnikih, potrošniški elektroniki, krmilnikih motorjev in številnih IoT napravah.
Zaključek
Arhitektura AVR je pomemben mejnik v razvoju mikrokontrolerjev: kombinacija RISC načel, harvardske organizacije, flash pomnilnika na čipu in bogate skupek perifernih enot je ustvarila vsestransko in priljubljeno družino naprav. Čeprav so se pojavile nove 32-bitne arhitekture, AVR še vedno ostaja široko uporabljena izbira zaradi razpoložljivosti, enostavnosti in velike skupnosti razvijalcev.

