AVR (Atmel) mikrokontroller-architektúra: definíció és fő jellemzők
AVR (Atmel) mikrokontroller-architektúra: gyors RISC dizájn, beépített flash memória, 32 regiszter, kiemelkedő órajelhatékonyság — modern alternatíva az MCS-51 helyett.
Az AVR mikrokontroller-architektúrát az Atmel (ma a Microchip része) fejlesztette ki a 1990-es évek közepén, és 1996 körül kezdett szélesebb körben elterjedni. Harvard-architektúrán alapul, azaz a program- és az adatmemória külön buszon és címterületen helyezkedik el, ami lehetővé teszi az egyidejű utasítás-olvasást és adatműveleteket. Az AVR volt az egyik első olyan mikrokontroller-család, amely a program tárolására chipen belüli flashmemóriát használta, szemben az akkoriban elterjedt egyszer programozható ROM, EPROM vagy EEPROM memóriával.
Sokszor olvasható, hogy az "AVR" a fejlesztők — Alf-Egil Bogen és Vegard Wollan — nevéből és a RISC elvből ered (Alf and Vegard's RISC). Ezt az elnevezést maga az Atmel is többször megemlítette; a lényeg, hogy az AVR egy egyszerű, hatékony RISC-szerű megközelítést valósít meg a beágyazott alkalmazásokhoz.
Fő jellemzők és előnyök
- Egységes, nagy regiszterkészlet: a mag 32 darab 8 bites általános célú regisztert (R0–R31) tartalmaz, amelyek közvetlenül csatlakoznak az ALU-hoz. Ez gyors, regiszter alapú műveleteket tesz lehetővé.
- Egyszeres órajel/utasítás teljesítmény: a legtöbb AVR-utasítás egyetlen órajel alatt végrehajtható, így az AVR közelítőleg 1 MIPS/MHz teljesítményt ad (azaz 1 MHz órajelen kb. 1 MIPS). Vannak természetesen kivételek (pl. memóriából betöltött utasítások, 16 bites műveletek, kisebb utasítások több ciklust igényelhetnek).
- Kétállású (fetch/execute) pipeline: az AVR pipelinelése lehetővé teszi, hogy az egyik órajelben történjen az utasítás lekérése, míg a következőben a végrehajtás, így növelve a hatékonyságot.
- Harvard-architektúra: külön program- és adatmemória, gyorsabb utasításvégrehajtás és egyszerűbb buszmenedzsment.
- Beépített nemfelejtő memória: program memória (Flash), adat-EERPOM (kis kapacitású, tartós adat tárolására) és SRAM az adatok futásidejű kezelésére.
Regiszterek és címtartományok
Az AVR 32 regisztere rugalmasan használható: bizonyos regiszterpárok (pl. R26–R31) 16 bites cím- és adatmutatóként is szolgálnak (X, Y, Z regiszterpárok), ami megkönnyíti a pointerekkel végzett műveleteket. A programszámláló (PC), a veremmutató (SP) és a státuszregiszter (SREG) szintén a mag fontos elemei.
Memória és perifériák
- Flash (program memória): a programok tárolására, in-circuit programozhatók és többször újraprogramozhatók.
- SRAM: futásidejű változók tárolása.
- EEPROM: tartós adatok tárolására (pl. konfigurációk), programból is írható/olvasható.
- Perifériák (esetenként család- és típusspecifikus): timers/counters, ADC (analóg-digitális átalakító), UART/USART, SPI, I2C/TWI, Watchdog timer, külső és belső megszakítások, analóg komparátor, DMA (XMEGA-ban), és más speciális funkciók.
- Programozás és hibakeresés: ISP (in-system programming), JTAG (egyes típusoknál), debugWIRE és támogatás az Atmel/Microchip fejlesztői eszközeivel.
AVR családok és tipikus felhasználás
- tinyAVR: kis csomagok, kevés I/O, alacsony fogyasztás — egyszerű alkalmazásokhoz.
- megaAVR: középkategóriás, sok I/O és periféria — a legismertebb család (például az ATmega328, amely az Arduino Uno alapja).
- XMEGA: fejlettebb funkciók, nagyobb sebesség és periféria-tartalom, gyakran ipari alkalmazásokhoz.
Eszközök és fejlesztői környezet
Népszerű fejlesztőeszközök: az open-source avr-gcc toolchain (fordító, bináris eszközök), avrdude programozó eszköz, valamint az Atmel/Microchip által kínált Microchip Studio (korábban Atmel Studio). Az Arduino platform nagyban hozzájárult az AVR-ek széles körű elterjedéséhez a hobbi- és oktatói közösségben.
Összegzés
Az AVR architektúra egyszerű, hatékony és könnyen használható megoldást nyújt beágyazott rendszerekhez: gyors regiszteralapú utasításvégrehajtás, beépített flash és perifériák, valamint széles választék különböző teljesítmény- és I/O igényekhez. Éppen ezért az AVR-ek népszerűek mind az ipari, mind a hobbi projektekben.

Atmel AVR ATmega8, 28 tűs DIP.
Alapvető családok
tinyAVR
- 0,5-8 kB program memória
- legfeljebb 0,5 kB SRAM
- legfeljebb 0,5 kB EEPROM
- 20 MHz-ig
- 6-32 tűs csomagolás
megaAVR
- 4-256 kB program memória
- 0,5-16kB SRAM
- 0,5-4 kB EEPROM
- 20 MHz-ig
- 20-100 tűs csomagolás
XMEGA
- 16-384kB program memória
- 2-32 kB SRAM
- külső buszinterfész akár 16M byte SRAM SDRAM számára
- 1-4 kB EEPROM
- 32 MHz-ig
- 44-100 tűs csomagolás
Jellemzők
Minden AVR rendelkezik néhány bemeneti/kimeneti porttal. A port legfeljebb 8 fizikai érintkezővel rendelkezik a csomagolásán. Minden pin bemenetként vagy kimenetként konfigurálható. Ha egy pin bemenetként van használva, akkor a PORTx regiszteren keresztül bekapcsolhatja a beépített pull-up ellenállásokat. Ha egy pin kimenetként van konfigurálva, akkor a porton lévő összes pin legfeljebb 40mA terhelést képes kezelni pinenként és maximum 100mA terhelést a port összes pinjére.
A/D átalakító
- 10 bites (tinyAVR, megaAVR), akár 8 csatornás multiplexeléssel
- 12 bites (XMEGA) 16 csatornás multiplexeléssel
Időzítők/számlálók (8 vagy 16 bites)
- A felhasználók konfigurálhatják PWM, számláló vagy időzítő.
- Egyszerű PWM üzemmódban a számláló regiszter megállás nélkül fut, és egy másik regiszterhez hasonlít. Ha a számláló regiszter magasabb, mint a második regiszter, akkor az Ocx pin "1"-re áll. Máskor az Ocx pin "0"-ra van állítva.
- A számlálónak van valamilyen külső forrása, például fotóérzékelője, és meg tudja számolni a fotóérzékelőn áthaladó emberek számát.
- Az időzítő pontos időben adja az impulzusokat. Óraprogramozási alkalmazásokhoz használják.
TWI - Kétvezetékes interfész Ez ugyanazt a protokollt használja, mint az 2IC, és használható 2IC interfészként.
UART/USART Az UART használható RS232/RS485 kommunikációra.
SPI - soros perifériás interfész
- nagyon gyors soros busz, amelyet az eszközökkel való kommunikáció adatátvitelére használnak.
- ezen a buszon keresztül lehet programot írni/olvasni a programmemóriába vagy EEPROM-ba/ból
USI - Univerzális soros interfész
- két- vagy háromvezetékes szinkron adatátvitelhez használatos
JTAG
- interfész az online hibakereséshez
D/A átalakító
- 12 bites (csak XMEGA), akár 2 csatornás multiplexeléssel
Kapcsolódó oldalak
- Arduino
Kérdések és válaszok
K: Mikor fejlesztették ki az AVR mikrokontroller architektúrát?
V: Az AVR mikrokontroller architektúrát 1996-ban fejlesztette ki az Atmel.
K: Milyen architektúrán alapul az AVR mikrokontroller?
V: Az AVR mikrokontroller a Harvard mikrokontroller-architektúrán alapul.
K: Mi különbözteti meg az AVR mikrokontrollert a fejlesztés idején a többi mikrokontrollertől?
V: Az AVR mikrokontroller a program tárolására chipen belüli flashmemóriát használ, szemben a többi akkori mikrokontroller által használt egyszer programozható ROM, EPROM vagy EEPROM memóriával.
K: Mi az AVR rövidítés általánosan elfogadott jelentése?
V: Sokan úgy vélik, hogy az AVR az Alf (Egil Bogen) és Vegard (Wollan) Risc processzorának rövidítése.
K: Milyen architektúrát váltott fel az AVR mikrokontroller?
V: Az AVR mikrokontroller a régebbi MCS-51 architektúrát váltotta fel.
K: Hány órajelciklust vesz igénybe az MCS-51 egy gépi ciklusa?
V: Az MCS-51 egy gépi ciklusa 12 órajelciklust vesz igénybe.
K: Mi az AVR mikrokontrollerek előnye az MCS-51-gyel szemben az egy órajelciklusra jutó teljesítmény tekintetében?
V: Az AVR mikrokontrollereknél az egy órajelciklusra jutó teljesítmény 12-szer nagyobb.
Keres