Atmel AVR

**AVR** on Atmelin mikro-ohjainperhe, joka sisältää laajan valikoiman 8-bittisiä mikro-ohjaimia. Sen kehittivät Norges Tekniske Høgskolen opiskelijat Alf-Egil Bogen ja Vegard Wollan. Harrastajien keskuudessa laitteisto on saanut suosiota Arduino-laitteissa.

## Ryhmittely

AVR-mikro-ohjaimet jaetaan kolmeen ryhmään niiden sisältämien ominaisuuksien sekä muistin määrän mukaan.

* ATmega
* AT90x
* ATtiny

**ATtiny:** 
*1–8&nbsp;kB ohjelmamuistia
*8–20-pin kotelo 

**ATmega:**
*4–256&nbsp;kB ohjelmamuistia
*28–100-pin kotelo 
*Laajennettu käskykanta 

**Tehtäväkohtaiset AVR-mikro-ohjaimet:** 
*ATmega-sarjan piireissä voi olla erikoisominaisuuksia, joita muissa AVR-piireissä ei ole,
kuten LCD-ohjain, USB-ohjain, CAN-ohjain, monimuotoisempi PWM jne.

## Teknisesti

Kaikki AVR-mikro-ohjaimet sisältävät RISC-ytimen, FLASH-ohjelmamuistia, SRAM-käyttömuistia, sekä useita I/O-väyliä. Jotkin ohjaimet sisältävät myös pysyvää EEPROM-käyttömuistia. Muita ominaisuuksia ovat esimerkiksi sisäinen kello-oskillaattori, ajastimet, keskeytysohjaimet, sarjaliikennepiiri (UART), SPI, IO-porttien ylösvetovastukset, pulssinleveysmodulaattori (PWM), A/D-muunnin (ADC), analoginen vertailija ja vahtikoira-ajastin.

## Ominaisuuksia

**AVR-sarja tarjoaa paljon erilaisia ominaisuuksia:**

*Kaksisuuntaiset portit, vapaasti konfiguroitavissa
*Sisäänrakennetut ylösvetovastukset
*Sisäinen oskillaattori
*Sisäistä FLASH-ohjelmamuistia jopa 256 kB
*ISP (In-system programming) käyttämällä esimerkiksi ISP:tä tai JTAG:ia
*OCD (On-chip debugging) käyttäen esimerkiksi JTAG:ia
*Sisäistä EEPROM-muistia jopa 8 kB
*Sisäistä SRAM-muistia jopa 8 kB
*8- ja 16-bittiset ajastimet
*PWM-lähtö
*Analogiavertailijoita
*10-bittinen A/D-muunnin
*Erilaisia sarjaväylämahdollisuuksia esimerkiksi:
**UART/USART (RS-232, RS-485...)
**SPI
**USI
*Vahtikoira (Watchdog timer)
*Erilaisia lepo- ja virransäästötiloja
*CAN-ohjaimen tuki
*USB-ohjaimen tuki
*Ethernet-ohjaimen tuki
*LCD-ohjaimen tuki.

## Ohjelmointi

Yleisin AVR-ohjelmointiin käytettävä kieli on C-kieli. Muita kielivaihtoehtoja ohjelmointiin ovat BASIC, Pascal  ja Assembly. Useimmiten päädytään kuitenkin käyttämään proseduraalista C-kieltä, sillä sen kirjoittaminen on nopeaa, eikä se ole Assemblyn tapaan vaikeasti hallittavaa ja muistettavaa symbolista konekieltä. AVR-mikro-ohjaimien suorittimen käskykanta on myös kehitetty vastaamaan erityisesti C-kielen tarpeisiin.
Atmel tarjoaa myös ilmaisen AVR Studio -ohjelman debuggaukseen ja ohjelmien kirjoittamiseen. Sillä voi myös simuloida ohjelman toimintaa. Ohjelman siirtäminen mikro-ohjaimeen voidaan tehdä käyttäen mm. JTAG-emulaattoria.

## AVR32

AVR-perheen rinnalle on ajan myötä tullut myös muita aliperheitä. Uusin tulokas on AVR32-suoritinperhe, joka sisältää valikoiman 32-bittisiä mikro-ohjaimia.

## Lähteet

## Aiheesta muualla

* Atmelin AVR-internetsivusto, (englanniksi) 
* Atmelin AVR32-internetsivusto, (englanniksi)
: Sisältää myös kaikkien AVR(32) mikro-ohjaimien datalehdet
* AVRFreaks AVR harrastelijoiden foorumi (englanniksi)
* Suomenkielistä tietoutta mikro-ohjaimista 
* www.microsalo.com Suomenkielinen AVR C-kirja ladattavissa ilmaiseksi. 
* AVR projects and information
*  E-Lab:n AVRco Embedded Pascal