Atmel AVR: RISC mikrokontrolerska arhitektura z flash pomnilnikom na čipu
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.


Atmel AVR ATmega8 v 28-pin DIP.
Osnovne družine
tinyAVR
- 0,5-8 kB programskega pomnilnika
- do 0,5 kB SRAM
- do 0,5 kB EEPROM
- do 20 MHz
- Paket s 6-32 nožicami
megaAVR
- 4-256 kB programskega pomnilnika
- 0,5-16 kB SRAM
- 0,5-4 kB EEPROM
- do 20 MHz
- Paket z 20-100 nožicami
XMEGA
- 16-384 kB programskega pomnilnika
- 2-32 kB SRAM
- zunanji vmesnik vodila za do 16 milijonov bajtov SRAM-a SDRAM-a
- 1-4 kB EEPROM
- do 32 MHz
- 44-100 pin paket
Značilnosti
Vsak AVR ima nekaj vhodnih/izhodnih priključkov. Vhod ima do 8 fizičnih nožic na svojem paketu. Vsak pin je lahko konfiguriran kot vhod ali izhod. Če je pin uporabljen kot vhod, lahko prek registra PORTx vklopi vgrajene upore pull-up. Če je pin konfiguriran kot izhod, lahko prenese do 40 mA obremenitve na pin in največ 100 mA za vse pine na portu.
A/D pretvornik
- 10-bitni (tinyAVR, megaAVR) z multipleksom do 8 kanalov
- 12-bitni (XMEGA) z multipleksom do 16 kanalov
Časovni števci (8-bitni ali 16-bitni)
- Uporabniki ga lahko konfigurirajo kot PWM, števec ali časovnik.
- V preprostem načinu PWM register štetja teče brez ustavljanja in se primerja z drugim registrom. Če je register štetja višji od drugega registra, je pin Ocx nastavljen na "1". V nasprotnem primeru je pin Ocx nastavljen na "0".
- Števec ima zunanji vir, kot je fotografski senzor, in lahko šteje število ljudi, ki prečkajo fotografski senzor.
- Časomer daje impulze v točno določenem času. Uporablja se za programiranje urnih aplikacij.
TWI - Two Wire Interface Uporablja enak protokol kot 2IC in se lahko uporablja kot vmesnik 2IC
UART/USART UART se lahko uporablja za komunikacijo RS232/RS485.
SPI - serijski periferni vmesnik
- zelo hitro serijsko vodilo, ki se uporablja za prenos podatkov pri komunikaciji z napravami.
- prek tega vodila lahko zapisujete/berete program v/iz programskega pomnilnika ali EEPROM.
USI - univerzalni zaporedni vmesnik
- uporablja se za dvo- ali trižični sinhroni prenos podatkov.
JTAG
- vmesnik za spletno razhroščevanje
D/A pretvornik
- 12-bitni (samo XMEGA) z multipleksom do 2 kanalov
Sorodne strani
- Arduino
Vprašanja in odgovori
V: Kdaj je bila razvita arhitektura mikrokrmilnika AVR?
O: Arhitekturo mikrokrmilnikov AVR je leta 1996 razvilo podjetje Atmel.
V: Na kateri arhitekturi temelji mikrokrmilnik AVR?
O: Mikrokrmilnik AVR temelji na harvardski arhitekturi mikrokrmilnikov.
V: Po čem se mikrokrmilnik AVR razlikuje od drugih mikrokrmilnikov v času njegovega razvoja?
O: Mikrokrmilnik AVR za shranjevanje programa uporablja bliskovni pomnilnik na čipu v nasprotju z enkratno programirljivim pomnilnikom ROM, EPROM ali EEPROM, ki so ga takrat uporabljali drugi mikrokrmilniki.
V: Kakšen je splošni pomen kratice AVR?
O: Veliko ljudi meni, da je AVR kratica za Alfov (Egil Bogen) in Vegardov (Wollan) procesor Risc.
V: Katero arhitekturo je nadomestil mikrokrmilnik AVR?
O: Mikrokrmilnik AVR je nadomestil starejšo arhitekturo MCS-51.
V: Koliko urnih taktov traja en strojni cikel MCS-51?
O: En strojni cikel MCS-51 traja 12 taktov.
V: Kakšna je prednost mikrokrmilnikov AVR pred MCS-51 glede zmogljivosti na takt?
O: Zmogljivost na taktni cikel je pri mikrokrmilnikih AVR 12-krat večja.