Atmel AVR — Harvard-arhitektuuriga mikrokontrollerite perekond
AVR-mikrokontrollerite arhitektuuri töötasid välja 1996. aastal Atmelis Alf‑Egil Bogen ja Vegard Wollan. See põhineb Harvardi mikrokontrollerite arhitektuuril, kus programmi- ja andmemälu on füüsiliselt eraldatud. AVR oli üks esimesi mikrokontrollerite perekondi, mis kasutas programmi salvestamiseks kiibisisest välkmälu, erinevalt tol ajal levinud ühekordselt programmeeritavast ROM-ist, EPROM-ist või EEPROM-ist.
Paljud inimesed usuvad, et lühend AVR tuleb nimetustest Alf ja Vegard RISC‑protsessor. See seletus on levinud ja sageli viidatud; Atmel on aga aja jooksul maininud, et AVR ei ole ametlik akronüüm, nii et mõlemad versioonid (nimelise päritolu ja mitteakronüümina) on ringluses.
Põhiomadused ja arhitektuur
AVR on RISC‑stiilis arhitektuur, mille tuum sisaldab 32 üldotstarbelist 8‑bitist registrit (R0–R31), mis on otseselt ühendatud ALU‑ga. See registerfail võimaldab otsepöördust kahele sõltumatule registrile ja enamikku käske täidetakse ühe masinakellatsükli jooksul, mis tähendab, et ühe käsu täitmiseks kuluv aeg võrdub ühe taktsükliga (oscillatoriga). Mõned keerukamad käsud või mäluoperatsioonid võivad võtta rohkem kui ühe kellataktsi.
AVR‑il on eraldi programmimälu (FLASH), andmemälu (SRAM) ja sageli ka sisemine EEPROM andmete püsivaks salvestamiseks. Mitmetes AVR‑peredes on täiendavad riistvaralised moodulid nagu analoog‑digitaalmuundurid (ADC), timerid/loendurid, PWM‑moodulid, UART/USART, SPI, I²C (TWI), watchdog ja rikkalik katkestuste tugi.
Võrdlus vanemate arhitektuuridega
Võrreldes vanema MCS‑51 (Intel 8051) arhitektuuriga pakub AVR sageli märgatavalt paremat jõudlust sama kellisageduse juures. MCS‑51 puhul võtab üks masinatsükkel sageli 12 taktsüklit (ja enamik lihtsamaid käske täidetakse ühe masinatsükliga ehk 12 kellataktsükliga). AVR‑i puhul on suur osa käske realiseeritud ühe kellataktsükliga, mistõttu saavutatakse samal kellisagedusel kuni mitu korda parem instruktsiooni‑läbilase (IPC) tulemus. See teeb AVR‑i eelistatuks paljudes rakendustes, kus vajalik on suur arvutusvõimsus ja madal viivitus.
AVR‑perekonnad ja näited
- tinyAVR – väikese ressurssiga seadmed madala energiatarbega ja lihtsate ülesannete jaoks.
- megaAVR – populaarne perekond, kuhu kuulub palju integreeritud periferaale; tuntud näide on ATmega328P (laialt kasutusel Arduino Uno plaadil).
- XMEGA – suurema jõudluse ja täiendavate riistvarafunktsioonidega seeria, sobib nõudlikumate rakenduste jaoks.
Tööriistad ja kogukond
AVR‑i toetavad laialdaselt avatud lähtekoodiga tööriistad, näiteks avr‑gcc (kompilaator), avrdude (programmeerija) ja mitmed IDEd. Samuti pakub tootja (nüüdseks Microchip, kes omandas Atmeli 2016. aastal) oma arendustööriistu, nagu Microchip Studio (endise nimega Atmel Studio). Suur ja aktiivne kasutajaskond (sh Arduino kogukond) tähendab, et dokumentatsioon, näited ja avatud projekti kood on kergesti leitavad.
Kus kasutatakse AVR‑mikrokontrollereid
AVR‑id sobivad laialdaselt tarbeelektroonikas, hariduses, prototüüpimisel, IoT‑seadmetes, andurite juhtimissüsteemides ja paljudes teistes rakendustes, kus on vaja taskukohast, madala energiatarbega ja hästi toetatud mikrokontrollerit.
Kokkuvõtlikult on AVR‑arhitektuur populaarne tänu oma lihtsusele, kiiretele ühe‑kellatsüklil baseeruvatele käskudele, rikkalikule perifeeriale ja tugevale ökosüsteemile, mis teeb selle sobivaks nii algajatele kui ka professionaalsetele arendajatele.


Atmel AVR ATmega8, 28-pinniline DIP.
Põhilised perekonnad
tinyAVR
- 0,5-8 kB programmimälu
- kuni 0,5 kB SRAM
- kuni 0,5 kB EEPROM
- kuni 20 MHz
- 6-32-poolne pakett
megaAVR
- 4-256 kB programmimälu
- 0,5-16kB SRAM
- 0,5-4 kB EEPROM
- kuni 20 MHz
- 20-100 viigipoolne pakett
XMEGA
- 16-384kB programmimälu
- 2-32 kB SRAM
- väline bussiühendus kuni 16M baidi SDRAMi SRAMi jaoks
- 1-4 kB EEPROM
- kuni 32 MHz
- 44-100 pin pakett
Omadused
Igal AVRil on mõned sisend-/väljundipordid. Pordil on kuni 8 füüsilist pini oma pakendil. Iga viigu saab konfigureerida sisendiks või väljundiks. Kui viik on kasutusel sisendina, saab registri PORTx kaudu sisse lülitada sisseehitatud tõmbetakistid. Kui viik on konfigureeritud väljundiks, võib see taluda kuni 40mA koormust iga viigu kohta ja maksimaalselt 100mA kõigi viikudega pordis.
A/D muundur
- 10-bitine (tinyAVR, megaAVR) kuni 8-kanalilise multipleksiga
- 12-bitine (XMEGA) kuni 16-kanalilise multipleksiga
Taimerid/loendurid (8- või 16-bitised)
- Kasutajad saavad seda konfigureerida PWM, loenduri või taimeriga.
- Lihtsa PWM-režiimi korral töötab loendusregister peatumata ja seda võrreldakse teise registriga. Kui loendusregister on suurem kui teise registri viigu Ocx on seatud "1". Teisel ajal on viigu Ocx seatud "0".
- Loenduril on mingi väline allikas, näiteks fotoandur, ja ta võib lugeda fotoanduri läbinud inimeste arvu.
- Taimer annab impulsse täpselt õigel ajal. Seda kasutatakse kella rakenduste programmeerimiseks.
TWI - Two Wire Interface See kasutab sama protokolli nagu 2IC ja seda saab kasutada 2IC-liidesena.
UART/USART UART-i saab kasutada RS232/RS485 sidepidamiseks.
SPI - Perifeerne seeriaviisiline liides
- väga kiire jadaväli, mida kasutatakse andmeedastuseks ja seadmetega suhtlemiseks.
- saate programmi kirjutada/lugeda programmi mällu või EEPROMi selle bussi kaudu.
USI - universaalne jadaliides
- kasutatakse kahe- või kolmejuhtmeliseks sünkroonseks andmeedastuseks
JTAG
- liides veebipõhiseks silumiseks
D/A muundur
- 12-bitine (ainult XMEGA) kuni 2-kanalilise multipleksiga
Seotud leheküljed
- Arduino
Küsimused ja vastused
K: Millal töötati välja AVR-mikrokontrolleri arhitektuur?
V: AVR-mikrokontrollerite arhitektuuri töötas 1996. aastal välja Atmel.
K: Millisel arhitektuuril põhineb AVR-mikrokontroller?
V: AVR-mikrokontroller põhineb Harvardi mikrokontrollerite arhitektuuril.
K: Mis eristab AVR-mikrokontrollerit selle väljatöötamise ajal teistest mikrokontrolleritest?
V: AVR-mikrokontroller kasutab programmi salvestamiseks kiibisisest välkmälu, erinevalt ühekordselt programmeeritavast ROMist, EPROMist või EEPROMist, mida teised mikrokontrollerid sel ajal kasutasid.
K: Mis on lühendi AVR üldlevinud tähendus?
V: Paljud inimesed usuvad, et AVR tähistab Alf (Egil Bogen) ja Vegard (Wollan) Risc-protsessorit.
K: Millist arhitektuuri asendas AVR-mikrokontroller?
V: AVR-mikrokontroller asendas vanema MCS-51 arhitektuuri.
K: Mitu taktsüklit võtab üks MCS-51 masinatsükkel aega?
V: Üks MCS-51 masinatsükkel võtab aega 12 taktsüklit.
K: Milline on AVR-mikrokontrollerite eelis MCS-51 ees seoses jõudlusega taktsükli kohta?
V: AVR-mikrokontrollerite jõudlus ühe taktsükli kohta on 12 korda suurem.