AVR mikrovaldikliai: Atmel RISC architektūra, veikimas ir savybės
Atraskite AVR mikrovaldiklius: Atmel RISC architektūra, greitas vieno taktų vykdymas, 32 registrai, flash atmintis ir jų privalumai programavimo bei įterptųjų sistemų projektams.
AVR mikrovaldiklio architektūrą 1996 m. sukūrė "Atmel". Ji pagrįsta Harvardo mikrovaldiklio architektūra. AVR buvo viena pirmųjų mikrovaldiklių šeimų, kurioje programoms saugoti buvo naudojama mikroschemoje esanti "flash" atmintis, o ne vienkartinė programuojama ROM, EPROM ar EEPROM, kurias tuo metu naudojo kiti mikrovaldikliai. Flash atmintis leido daugkartinai perrašyti programinę įrangą ir gerokai palengvino tiek vystymą, tiek masinę gamybą.
Daugelis žmonių mano, kad AVR reiškia Alf (Egil Bogen) ir Vegard (Wollan) "Risc" procesorių — tai pagarbos ženklas kūrėjams ir populiari paaiškinimo versija. Oficialiai Atmel vardą AVR interpretuodavo kaip RISC tipo branduolį, tačiau prasmė nebuvo vienareikšmiškai apibrėžta.
Architektūros pagrindai ir veikimas
AVR yra RISC tipo mikrovaldiklis su atskira programine ir duomenų atmintimi (Harvard architektūra). Svarbiausi bruožai:
- 32 bendrosios paskirties registrai (R0–R31), tiesiogiai sujungti su ALU — tai leidžia greitai atlikti operacijas be papildomų atminties prieigos ciklų.
- Daugelis instrukcijų vykdomos per vieną klavišo pulsą (1 taktą), nes AVR turi dviejų fazių (fetch/execute) vamzdelį (pipeline), leidžiantį nuolat vykdyti instrukcijas greitu taktavimu.
- Instrukcijų žodžio ilgis dažniausiai 16 bitų; kai kurios instrukcijos užima 32 bitus (pvz., ilgesnės ar sudėtingesnės operacijos).
- Harvardo architektūra leidžia vienu metu skaityti instrukciją iš programinės atminties ir pasiekti duomenis iš duomenų atminties, todėl padidėja našumas.
Palyginimas su MCS-51 (8051)
Senoji MCS-51 (8051) architektūra dažnai naudoja ilgesnius mašininius ciklus (vienas mašininis ciklas gali užtrukti kelis takto ciklus; klasikinis 8051 – 12 takto ciklų vienam mašininiam ciklui), todėl daug instrukcijų reikalauja kelių taktų. AVR mikrovaldikliuose dauguma instrukcijų atliekamos vienu taktu, todėl per taktą gaunamas žymiai didesnis našumas lyginant su tradiciniu 8051 dizainu.
Instrukcijos ir aparatūros ypatybės
- Instrukcijų rinkinys: RISC tipo, paprastas ir efektyvus; daugiausia 16 bitų ilgio instrukcijos leidžia kompaktišką programos dydį ir greitą vykdymą.
- ALU ir registrų failas: 32 registrai, integruoti su ALU, suteikia galimybę pasiekti du registrus vienu metu ir atlikti operaciją per vieną ciklą.
- Atminties tipai: programinė atmintis – flash; duomenų atmintis – SRAM; nešiojama/ilgaamžė konfigūracinė atmintis – EEPROM; taip pat yra fuses/lock bit’ai konfigūravimui.
- Periferialai: timers/counters, ADC, DAC (kai kuriuose modeliuose), UART/USART, SPI, I2C (TWI), PWM kanalai, analoginiai komparatoriai.
- Interruption handling: aparatinės pertraukos su prioritetais, greitas reagavimas — daugumoje atvejų pertraukos aptarnavimas vykdomas labai mažai užtrunkant CPU.
- Energetinis valdymas: keli energijos taupymo režimai (sleep modes), galimybė veikti mažais taktiniais dažniais bei naudoti vidinį RC osciliatorių arba išorinį kristalą.
AVR šeimos
AVR produkto šeimos yra skirstomos pagal pajėgumą ir paskirtį:
- tinyAVR – labai mažos galios ir talpos, paprastai skirtos paprastiems valdikliams su keliais IO ir minimaliu periferijos rinkiniu.
- megaAVR – populiariausi, su daugiau IO, periph., didesne flash/SRAM atmintimi (pvz., ATmega serija, plačiai naudojama Arduino platformoje, pvz., ATmega328P).
- XMEGA – pažangesni modeliai su didesniu našumu, daugiau periferių ir geresne energijos valdymo bei ADC/PWM funkcionalumu.
- AVR32 – Atmel sukurtas 32 bitų RISC branduolys, kuris yra atskira šeima nuo tradicinio 8 bitų AVR; jis skirtas aukštesnės spartos pritaikymams.
Programavimas ir vystymas
AVR mikrovaldikliai turi daug palaikymo įrankių ir ekosistemų, todėl jie populiarūs tiek pramonėje, tiek tarp hobistų:
- Įrankiai: Microchip Studio (anksčiau Atmel Studio), avr-gcc (GNU toolchain), avrdude ir kt.
- Programatoriai ir derintuvai: ISP (In-System Programming) prievadai, JTAG, debugWIRE; populiarūs programatoriai – AVRISP, USBasp, Atmel-ICE.
- Ekosistema: platus bibliotekų rinkinys, pavyzdžiai, dokumentacija ir bendruomenės palaikymas. Arduino platforma dar labiau išpopuliarino AVR mikrovaldiklius tarp pradedančiųjų ir maker'ių.
Tipinės taikymo sritys
- Embedded įrenginiai ir valdikliai
- Oro, pramoninė automatikos įranga ir vartojimo elektronika
- Švietimas ir prototipavimas (ypač dėl Arduino)
- Maži energijos sąnaudų sprendimai ir baterijos pagrindu veikiantys prietaisai
Privalumai ir trūkumai
- Privalumai: paprasta RISC architektūra, greitas vykdymas, 32 registrai, plati įrankių ir bendruomenės parama, flash atmintis perrašymui.
- Trūkumai: dauguma 8 bitų AVR modelių riboti atmintimi ir adresavimo galimybėmis lyginant su modernesnėmis 32 bitų architektūromis; didesnės spartos ar atminties reikalaujantiems projektams tinka XMEGA arba kitų gamintojų 32 bitų procesoriai.
Apibendrinant, AVR mikrovaldikliai pasižymi paprasta ir efektyvia RISC architektūra, greitu vykdymu daugeliui instrukcijų ir stipria ekosistema, todėl jie ir šiandien plačiai naudojami tiek mokymuisi, tiek realiems pramoniniams sprendimams.

Atmel AVR ATmega8, 28 kontaktų DIP.
Pagrindinės šeimos
tinyAVR
- 0,5-8 kB programos atminties
- iki 0,5 kB SRAM
- iki 0,5 kB EEPROM
- iki 20 MHz
- 6-32 kontaktų paketas
megaAVR
- 4-256 kB programos atminties
- 0,5-16 kB SRAM
- 0,5-4 kB EEPROM
- iki 20 MHz
- 20-100 kontaktų paketas
XMEGA
- 16-384 kB programos atmintis
- 2-32 kB SRAM
- išorinė magistralės sąsaja iki 16M baitų SRAM atminčiai SDRAM
- 1-4 kB EEPROM
- iki 32 MHz
- 44-100 kontaktų paketas
Funkcijos
Kiekvienas AVR turi tam tikrus įvesties ir išvesties prievadus. Prievadas turi iki 8 fizinių kontaktų ant pakuotės. Kiekvienas kaištis gali būti sukonfigūruotas kaip įvesties arba išvesties. Jei kaištis naudojamas kaip įvestis, registre PORTx galima įjungti įmontuotus ištraukimo rezistorius. Jei kaištis sukonfigūruotas kaip išvestis, jis gali išlaikyti iki 40 mA apkrovą vienam kaiščiui ir ne daugiau kaip 100 mA apkrovą visiems prievado kaiščiams.
A/D keitiklis
- 10 bitų (tinyAVR, megaAVR) su multipleksu iki 8 kanalų
- 12 bitų (XMEGA) su multipleksu iki 16 kanalų
Laikmačiai / skaitikliai (8 arba 16 bitų)
- Vartotojai gali jį konfigūruoti kaip PWM, skaitiklį arba laikmatį.
- Paprasto PWM režimo metu skaičiavimo registras veikia be sustojimo ir yra lyginamas su kitu registru. Jei skaičiavimo registras yra didesnis už antrąjį registrą, Ocx kaištis nustatomas į "1". Kitu atveju Ocx kaištis nustatomas į "0".
- Skaitiklis turi tam tikrą išorinį šaltinį, pvz., foto jutiklį, ir gali suskaičiuoti pro foto jutiklį praėjusius žmones.
- Laikmatis impulsus duoda tiksliai nustatytu laiku. Jis naudojamas laikrodžio programoms programuoti.
TWI - dviejų laidų sąsaja Naudoja tą patį protokolą kaip ir 2IC ir gali būti naudojama kaip 2IC sąsaja.
UART/USART UART gali būti naudojamas RS232/RS485 ryšiui palaikyti.
SPI - nuoseklioji periferinė sąsaja
- labai greita nuoseklioji magistralė, naudojama duomenims perduoti, kai bendraujama su įrenginiais.
- per šią magistralę galima įrašyti/skaityti programą į/iš programos atminties arba EEPROM.
USI - universalioji nuoseklioji sąsaja
- naudojamas dviejų arba trijų laidų sinchroniniam duomenų perdavimui.
JTAG
- internetinio derinimo sąsaja
D/A keitiklis
- 12 bitų (tik XMEGA) su multipleksu iki 2 kanalų
Susiję puslapiai
- Arduino
Klausimai ir atsakymai
K: Kada buvo sukurta AVR mikrovaldiklio architektūra?
A: AVR mikrovaldiklio architektūrą 1996 m. sukūrė "Atmel".
K: Kokia architektūra pagrįstas AVR mikrovaldiklis?
A.: AVR mikrovaldiklis pagrįstas Harvardo mikrovaldiklio architektūra.
K: Kuo AVR mikrovaldiklis skiriasi nuo kitų mikrovaldiklių, kurie buvo sukurti tuo metu?
A: AVR mikrovaldiklis programoms saugoti naudoja luste esančią "flash" atmintį, o ne vienkartinę programuojamąją ROM, EPROM ar EEPROM, kurias tuo metu naudojo kiti mikrovaldikliai.
K: Kokia yra įprasta AVR santrumpos reikšmė?
A: Daugelis žmonių mano, kad AVR reiškia Alf (Egil Bogen) ir Vegard (Wollan) Risc procesorių.
K: Kokią architektūrą pakeitė mikrovaldiklis AVR?
A: AVR mikrovaldiklis pakeitė senesnę MCS-51 architektūrą.
K: Kiek taktinių ciklų trunka vienas MCS-51 mašininis ciklas?
A: Vienas MCS-51 mašininis ciklas trunka 12 taktų.
K: Koks AVR mikrovaldiklių pranašumas, palyginti su MCS-51, kalbant apie vieno taktinio ciklo našumą?
A: AVR mikrovaldiklių našumas per taktinį ciklą yra 12 kartų didesnis.
Ieškoti