AVR mikrokontrolleru arhitektūru Atmel publicēja 1996. gadā. Tā bāzējas uz Hārvarda mikrokontrolleru arhitektūras principiem — programmata un datu atmiņa ir atdalītas, ko ļauj optimizēt ātrdarbību. Viens no AVR agrīnajiem tehnoloģiskajiem ieguvumiem bija tas, ka programmas atmiņā izmantoja programmējamu zibatmiņu (flash) — pretstatā iepriekš biežāk lietotajām vienreiz programmējamām ROM, EPROM vai EEPROM risinājumiem — kas atviegloja atkārtotu programmēšanu un attīstīja plašu izstrādātāju ekosistēmu.
AVR arhitektūru izstrādāja Norvēģijas inženieri Alf‑Egil Bogen un Vegard Wollan (Atmel Norway). Tā ir 8 bitu RISC tipa arhitektūra ar skaidru instrukciju tipu kopu, vienkāršotu adresēšanu un mērķi nodrošināt augstu izpildes ātrumu un zemu enerģijas patēriņu iebūvētām ierīcēm.
Galvenās īpašības
- 32 vispārējas nozīmes reģistri (R0–R31), tieši pieejami ALU operācijām — divi reģistri var tikt nolasīti vienā instrukcijā, kas ļauj veikt lielāko daļu operāciju vienā takts ciklā.
- Hārvarda arhitektūra — atsevišķa programmas (flash) un datu (SRAM) atmiņa, kas ļauj vienlaikus veikt instrukciju fetch un datu piekļuvi.
- Krūvju (pipeline) šēma — vienkārša divu soļu pipeline (fetch + execute), kas nodrošina, ka lielākā daļa instrukciju tiek izpildītas vienā takts ciklā.
- Atbalsts programmējamai flash atmiņai programmu uzglabāšanai un pārprogrammēšanai in‑circuit (ISP), kas padara izstrādi un atjaunināšanu ērtāku.
- Bagātīgs perifērijas komplekts — taimeri, ADC, PWM, UART/USART, SPI, I2C (TWI), watchdog, EEPROM un citi atkarībā no konkrētā AVR draivera sērijas.
- Zemo enerģijas režīmu atbalsts un funkcijas, piemēram, brown‑out detektors un dažādi miega režīmi, kas svarīgi bateriju darbināmām ierīcēm.
Instrukciju izpilde un reģistri
AVR instrukciju kods ir visbiežāk 16 bitu garš (ir arī 32 bitu instrukcijas specifiskām operācijām), un arhitektūra ir optimizēta, lai lielākā daļa instrukciju tiktu izpildītas vienā takts ciklā. Salīdzinājumam, klasiskās MCS‑51 (8051) arhitektūras mašīnas cikls bija 12 oscilatora cikli, tādēļ AVR ierīces pie tā paša oscilatora ātruma var nodrošināt daudz lielāku instrukciju caurlaidspēju — praktiski līdz 12 reižu priekšrocība noteiktos režīmos, jo AVR izpilda instrukcijas vienā ciklā.
Reģistru faili (R0–R31) atrodas mikrokontroliera kodolā un ir tieši savienoti ar ALU, kas nozīmē ātru piekļuvi un vienkāršāku programmēšanu ar mazāku atmiņas pieprasījumu. Bieži izmantojamie rādītāji un datus var glabāt reģistros, savukārt staka rādītājs un statusa reģistrs nodrošina izpildes kontekstu un nosacījumu baitu (C, Z, N, V, S, T, H).
Atšķirīgie AVR veidi un paplašinājumi
Atmel (vēlāk Microchip) izlaida vairākas AVR sērijas, piemēram, tinyAVR (mazas I/O funkcijas, zemais cenu līmenis), megaAVR (vairāk perifēriju un atmiņas), XMEGA (augstāka veiktspēja, paplašināta perifērija) un arī 32 bitu AVR32 arhitektūru, kas ir atsevišķs projekts un neatbilst klasiskajam 8 bitu AVR. Dažos Atmega/XMEGA variantos ir integrēta aparatūras reizinātāja bloka atbalsts un papildu DMA funkcijas.
Praktiskie aspekti un ekosistēma
- Izstrādes rīki: plaši izmantota atklātā koda toolchain — avr‑gcc, avr‑libc, avrdude, un oficiālā Atmel/Microchip Studio ar debuggēšanas atbalstu.
- Programēšana un debug: ISP (in‑system programming), PDI/JTAG/UPDI atkarībā no sērijas, kā arī bootloader risinājumi.
- Popularitāte: AVR mikrokontrolieri kļuva ļoti populāri hobiju un profesionālajā jomā — piemēram, Arduino platformas sākotnējie modeļi izmantoja Atmel AVR (ATmega328P u.c.), kas vēl vairāk palielināja pieejamību un mācību materiālu skaitu.
Vēsturisks un tehnoloģisks nozīmīgums
AVR arhitektūra būtiski ietekmēja iebūvēto sistēmu izstrādi, pateicoties vienkāršajai RISC filozofijai, spēcīgajai perifērijai un vieglai programmēšanai. Tā kā flash programmējamība bija agrīni pieejama un cena/jauda attīstījās, AVR ierīces kļuva par vienu no populārākajiem risinājumiem prototipēšanā, mācībās un komerciālās iekārtās.
Ja vēlaties, varu papildināt rakstu ar tehniskiem piemēriem (instrukciju piemēriem, reģistru aprakstu), salīdzinājumu ar citām arhitektūrām vai īsu ceļvedi, kā sākt programmēt AVR ar avr‑gcc vai Arduino vidē.

