AVR (Atmel) — Harvard architektúra mikrokontrolérov s flash pamäťou
AVR (Atmel) – prehľad harvardskej architektúry mikrokontrolérov s integrovanou flash pamäťou: vysoký výkon na takt, 32 registrov, ideálne pre embedded projekty.
Architektúru mikrokontroléra AVR vyvinula spoločnosť Atmel v roku 1996. Je založená na harvardskej architektúre mikrokontrolérov, čo znamená, že má oddelené zbernice pre inštrukcie (programovú pamäť) a pre dáta (pamäť SRAM). AVR bol jednou z prvých rodín mikrokontrolérov, ktoré na ukladanie programov používali pamäť flash priamo na čipe, na rozdiel od jednorazovo programovateľných pamätí ROM, EPROM alebo EEPROM, ktoré v tom čase používali iné mikrokontroléry. Použitie flash pamäte umožnilo jednoduché a opakovateľné programovanie zariadení bez výmeny čipov a zjednodušilo vývoj i výrobu.
Mnoho ľudí si myslí, že skratka AVR vznikla z anglického spojenia „Alf and Vegard RISC“ — podľa mien tvorcov Alf-Egil Bogen a Vegard Wollan. Hoci existujú rôzne interpretácie názvu, autori zohrali kľúčovú úlohu pri návrhu tejto rodiny procesorov.
AVR predstavuje 8-bitové RISC jadro s niekoľkými typickými vlastnosťami, ktoré ho odlišujú od starších 8-bitových architektúr, napríklad MCS-51. Staršia architektúra MCS-51 mala strojový cyklus trvajúci 12 taktov a väčšina inštrukcií sa vykonala v jednom takomto cykle. Mikrokontroléry AVR (MCU) dokážu vykonať veľkú časť inštrukcií v jednom strojovom cykle, pričom jeden strojový cyklus zodpovedá jednému taktovému pulzu CPU, čo prináša podstatne vyšší výkon na jeden takt. Niektoré inštrukcie alebo operácie (napr. prístup do niektorých periférií alebo programovej pamäte) však môžu vyžadovať viac cyklov.
Základné vlastnosti jadra
Jadro AVR má 32 všeobecných 8-bitových registrov priamo pripojených k ALU. Toto usporiadanie umožňuje rýchly prístup k operandom — ALU môže v rámci jednej inštrukcie čítať dve nezávislé registre a vykonať operáciu v jednom cykle. Niektoré dôležité body:
- Registrové páry (X, Y, Z) umožňujú 16-bitové operácie a adresovanie pamäte.
- Inštrukčná sada je prevažne 16-bitová (väčšina inštrukcií), pričom niektoré inštrukcie sú 32-bitové pre zložitejšie operácie.
- Oddelené zbernice pre inštrukcie a dáta (Harvard) umožňujú súbežné čítanie inštrukcie a dátových operandov, čo zlepšuje výkon.
Periférie a funkcie na čipe
AVR mikrokontroléry obsahujú širokú škálu periférií integrovaných na čipe, v závislosti od konkrétnej rodiny a modelu. Medzi bežné patria:
- Timer/Counter moduly s PWM
- Analógovo-digitálne prevodníky (ADC)
- Sériové rozhrania: USART/UART, SPI, I2C (TWI)
- Watchdog timer, interné oscilátory, externé hodinové vstupy
- Porty a prerušenia s maskovateľnými úrovňami
Vyššie modely (napr. XMEGA) pridávajú pokročilé funkcie, ako DMA, rozšírené riadenie napájania, event systém a ďalšie hardvérové periférie pre náročnejšie aplikácie.
Rodiny a použitie
AVR rodina zahŕňa niekoľko hlavných skupín, ktoré sa líšia veľkosťou pamäte, počtom pinov a dostupnými perifériami:
- tinyAVR – malé a úsporné MCU pre jednoduché aplikácie a spotrebnú elektroniku.
- megaAVR – populárne modely s väčšou flash pamäťou a množstvom periférií (napr. ATmega328P použitý v Arduino Uno).
- XMEGA – vyšší výkon a rozšírené periférie (DMA, viac ADC kanálov, rozšírené časovače).
- AVR32 – 32-bitová rodina od Atmelu, ktorá je odlišná od klasického 8-bitového AVR.
AVR mikrokontroléry sú obľúbené v hobby komunite aj pri priemyselných aplikáciách vďaka jednoduchému programovaniu, dobrej podpore nástrojov a dostupnosti — výrazne ich preslávil aj ekosystém Arduino, ktorý používa primárne AVR čipy.
Nástroje a programovanie
Pre vývoj a programovanie AVR existuje bohatá sada nástrojov:
- Vývojové prostredia: Atmel Studio (teraz Microchip/Microchip Studio), textové editory a Makefile workflow s avr-gcc.
- Programátory: ISP (SPI), JTAG, UPDI (novšie tinyAVR), debugWIRE — rôzne hardvérové rozhrania závislé od modelu.
- Softvér na nahrávanie: avrdude a iné nástroje pre záznam do flash pamäte a nastavenie fuse/lock bitov.
Na čipe sú často k dispozícii EEPROM (na ukladanie nastavení), konfiguračné fuse bity (nastavenie vstupného hodinového režimu, bootloaderu a ochrany pamäte) a lock bity na ochranu kódu pred čítaním.
Záver
AVR architektúra priniesla v 90. rokoch prelomové zlepšenie výkonu a použiteľnosti vďaka kombinácii RISC princípov, oddelených zberníc (Harvard) a zabudovanej flash pamäte. Dodnes zostáva populárnou vo vzdelávaní, hobby projektoch a v mnohých priemyselných riešeniach vďaka svojej jednoduchosti, spoľahlivosti a širokej softvérovej a hardvérovej podpore.

Atmel AVR ATmega8 v 28-pinovom DIP.
Základné rodiny
tinyAVR
- 0,5-8 kB programovej pamäte
- do 0,5 kB SRAM
- do 0,5 kB EEPROM
- do 20 MHz
- 6-32 pinové balenie
megaAVR
- 4-256 kB programovej pamäte
- 0,5-16 kB SRAM
- 0,5-4 kB EEPROM
- do 20 MHz
- 20-100 pinové balenie
XMEGA
- 16-384 kB programovej pamäte
- 2-32 kB SRAM
- externé zbernicové rozhranie pre až 16M bajtov pamäte SRAM SDRAM
- 1-4 kB EEPROM
- do 32 MHz
- 44-100 pinové balenie
Funkcie
Každý AVR má niekoľko vstupných/výstupných portov. Port má na svojom obale až 8 fyzických pinov. Každý pin môže byť nakonfigurovaný ako vstup alebo výstup. Ak je pin použitý ako vstup, môže zapnúť zabudované pull-up rezistory prostredníctvom registra PORTx. Ak je pin nakonfigurovaný ako výstup, môže zvládnuť až 40 mA záťaž na pin a maximálne 100 mA pre všetky piny na porte.
A/D prevodník
- 10-bitové (tinyAVR, megaAVR) s multiplexom až do 8 kanálov
- 12-bitový (XMEGA) s multiplexom až do 16 kanálov
Časovače/počítače (8-bitové alebo 16-bitové)
- Používatelia ho môžu nakonfigurovať ako PWM, čítač alebo časovač.
- V jednoduchom režime PWM beží počítací register bez zastavenia a porovnáva sa s iným registrom. Ak je počítací register vyšší ako druhý register, pin Ocx sa nastaví na "1". V opačnom prípade je pin Ocx nastavený na "0".
- Počítadlo má nejaký externý zdroj, napríklad fotosenzor, a môže počítať počet ľudí, ktorí prejdú okolo fotosenzora.
- Časovač dáva impulzy v presnom čase. Používa sa na programovanie hodinových aplikácií.
TWI - dvojvodičové rozhranie Používa rovnaký protokol ako 2IC a môže sa používať ako rozhranie 2IC
UART/USART UART možno použiť na komunikáciu RS232/RS485.
SPI - sériové periférne rozhranie
- veľmi rýchla sériová zbernica, ktorá sa používa na prenos dát pri komunikácii so zariadeniami
- cez túto zbernicu môžete nahrávať/čítať program do/z programovej pamäte alebo EEPROM
USI - univerzálne sériové rozhranie
- používa sa na dvoj- alebo trojvodičový synchrónny prenos údajov
JTAG
- rozhranie na ladenie online
D/A prevodník
- 12-bitové (len XMEGA) s multiplexom až do 2 kanálov
Súvisiace stránky
- Arduino
Otázky a odpovede
Otázka: Kedy bola vyvinutá architektúra mikrokontroléra AVR?
Odpoveď: Architektúra mikrokontroléra AVR bola vyvinutá v roku 1996 spoločnosťou Atmel.
Otázka: Na akej architektúre je založený mikrokontrolér AVR?
Odpoveď: Mikrokontrolér AVR je založený na harvardskej architektúre mikrokontroléra.
Otázka: Čo odlišuje mikrokontrolér AVR od ostatných mikrokontrolérov v čase jeho vývoja?
Odpoveď: Mikrokontrolér AVR používa na ukladanie programov pamäť flash na čipe, na rozdiel od jednorazovo programovateľnej pamäte ROM, EPROM alebo EEPROM, ktoré v tom čase používali iné mikrokontroléry.
Otázka: Aký je všeobecne rozšírený význam skratky AVR?
Odpoveď: Mnohí ľudia sa domnievajú, že AVR je skratka pre procesor Risc Alf (Egil Bogen) a Vegard (Wollan).
Otázka: Akú architektúru nahradil mikrokontrolér AVR?
Odpoveď: Mikrokontrolér AVR nahradil staršiu architektúru MCS-51.
Otázka: Koľko taktov trvá jeden strojový cyklus MCS-51?
Odpoveď: Jeden strojový cyklus MCS-51 trvá 12 taktov.
Otázka: Aká je výhoda mikrokontrolérov AVR oproti MCS-51 z hľadiska výkonu na jeden takt?
Odpoveď: Výkon na jeden takt je pri mikrokontroléroch AVR 12-krát vyšší.
Prehľadať