AVR-mikrocontroller: Atmels RISC-arkitektur, funktioner og historie
Få indblik i AVR-mikrocontrollerens historie, Atmels RISC-arkitektur, ydeevne, funktioner og anvendelser — hvorfor AVR revolutionerede embedded design.
AVR-mikrocontroller-arkitekturen blev udviklet af Atmel i 1996 og er baseret på en Harvard-arkitektur, hvor program- og data-hukommelse er fysisk adskilt. Et af de vigtigste innovationstræk ved AVR var anvendelsen af on-chip flash-hukommelse til programlagring i stedet for de datidige løsninger med engangsprogrammerbar ROM og de mere langsomme EPROM- eller EEPROM-teknologier. Flash-hukommelsen muliggjorde bl.a. in-system programming (ISP) og lettere opdatering af firmware i felten.
Arkitektur og ydeevne
AVR er en RISC-baseret 8-bit mikrocontrollerfamilie med en effektiv to-trins pipeline (fetch + execute). Det betyder, at de fleste instruktioner kan gennemføres i én clockcyklus, hvor traditionelle 8051-baserede design (MCS-51) ofte brugte 12 clockcyklusser pr. maskincyklus. I praksis giver dette en betydeligt højere ydelse pr. clockcyklus — teoretisk op til 12 gange højere sammenlignet med MCS-51 — selvom den faktiske gevinst afhænger af instruktionstypen og kodeblokken.
Registerfil og instruktionssæt
Kernen indeholder 32 generelle 8-bit registre, som er direkte forbundet med ALU'en. Det gør det muligt at hente to operander fra registret i samme cyklus og udføre aritmetiske eller logiske instruktioner hurtigt. Instruktionssættet er designet til at være kompakt og effektivt, hvilket også gør det velanbefalet for kompilerede sprog som C.
- Instruktionstyper: aritmetik, logik, bitmanipulation, branche, ind-/udgangenheder, og porte til periferi.
- Hukommelsestyper: on-chip flash til program, SRAM til data og ofte en lille mængde EEPROM til vedvarende data.
- Pipeline: to trin (fetch & execute), hvilket understøtter enkel-cyklus-udførelse af mange instruktioner.
Periferiudstyr og energistyring
AVR-familien leveres med et bredt udvalg af indbyggede periferifunktioner, afhængig af serie og model. Typiske perifere enheder omfatter:
- Timer/Counter og PWM
- ADC (analog-til-digital konverter)
- USART, SPI og TWI/I²C kommunikation
- Watchdog-timer og hardware-bootloader-støtte
- Analoge comparatorer og forskellige lavenergi-dvaleformer
Der er også veldesignede lavstrømsfunktioner, som gør AVR velegnet til batteridrevne applikationer.
Familier og anvendelser
AVR-familien omfatter flere undergrupper, f.eks. tinyAVR (meget små og simple enheder), megaAVR (mellemklasse med flere perifere enheder) og XMEGA (avancerede enheder med højere performance og flere funktioner). AVR-mikrocontrollere har fundet bred anvendelse inden for indlejrede systemer, industrielt udstyr, forbrugerelektronik og i hobby- og uddannelsesmiljøer — især fordi ATmega-serien er kernen i mange Arduino-kort, som har øget populariteten.
Historie og navnetolkning
Navnet "AVR" forbindes ofte med navnene Alf‑Egil Bogen og Vegard Wollan, de to ingeniører, som stod bag det oprindelige design, og derfor omtales det nogle gange uformelt som "Alf og Vegard's RISC". Det er dog værd at bemærke, at forkortelsens officielle betydning ikke altid er entydigt formaliseret af Atmel, og betegnelsen bruges primært historisk/umuligt i fællesskabet.
AVR voksede i udbredelse i løbet af 2000'erne, blev et standardvalg i mange små og mellemstore indlejrede projekter, og i 2016 blev Atmel opkøbt af Microchip Technology — en udvikling som har ført til fortsat support og integration i Microchips produktfamilie.
Sammenfatning
AVR-mikrocontrolleren er kendetegnet ved en enkel og effektiv RISC-arkitektur med on-chip flash, en stor registerfil direkte tilknyttet ALU'en og et rigt udvalg af periferi. Dens evne til at udføre mange instruktioner i en enkelt clockcyklus, sammen med gode udviklingsværktøjer og populær støtte i community-projekter som Arduino, gør AVR til et attraktivt valg for både industrielle og hobbyprojekter.

Atmel AVR ATmega8 i 28-pin DIP.
Grundlæggende familier
tinyAVR
- 0,5-8 kB programhukommelse
- op til 0,5 kB SRAM
- op til 0,5 kB EEPROM
- op til 20 MHz
- 6-32 pin-pakke
megaAVR
- 4-256 kB programhukommelse
- 0,5-16kB SRAM
- 0,5-4 kB EEPROM
- op til 20 MHz
- 20-100 pin-pakke
XMEGA
- 16-384kB programhukommelse
- 2-32 kB SRAM
- ekstern busgrænseflade til op til 16 MB SRAM eller SDRAM med op til 16 MB SRAM
- 1-4 kB EEPROM
- op til 32 MHz
- 44-100 pin-pakke
Funktioner
Alle AVR'er har nogle input/output-porte. Porten har op til 8 fysiske pins på sin pakke. Hver pin kan konfigureres som input eller output. Hvis en pin bruges som input, kan den slå indbyggede pull-up-modstande til via register PORTx. Hvis en pin er konfigureret som output, kan den håndtere op til 40 mA belastning pr. pin og maks. 100 mA for alle pins på porten.
A/D-konverter
- 10-bit (tinyAVR, megaAVR) med multiplex op til 8 kanaler
- 12-bit (XMEGA) med multiplex op til 16 kanaler
Timere/tællere (8-bit eller 16-bit)
- Brugerne kan konfigurere den som PWM, tæller eller timer.
- I simpel PWM-tilstand kører tælleregisteret uden stop og sammenlignes med et andet register. Hvis tælleregisteret er højere end det andet register, sættes pin Ocx til "1". I andre tilfælde sættes pin Ocx til "0".
- Tælleren har en ekstern kilde som f.eks. en fotosensor og kan tælle antallet af personer, der passerer fotosensoren.
- Timer giver impulser i nøjagtig tid. Den bruges til programmering af urapplikationer.
TWI - Two Wire Interface Denne bruger den samme protokol som 2IC og kan bruges som 2IC-interface
UART/USART UART'en kan bruges til RS232/RS485-kommunikation.
SPI - Seriel perifer grænseflade
- meget hurtig seriel bus, der anvendes til dataoverførsel eller kommunikation med enheder
- du kan brænde/læse programmer til/fra programhukommelse eller EEPROM via denne bus
USI - Universal Serial Interface (universel seriel grænseflade)
- anvendes til synkron dataoverførsel med to eller tre ledninger
JTAG
- grænseflade til online fejlfinding
D/A-konverter
- 12-bit (kun XMEGA) med multiplex op til 2 kanaler
Relaterede sider
- Arduino
Spørgsmål og svar
Spørgsmål: Hvornår blev AVR-mikrocontrollerarkitekturen udviklet?
A: AVR-mikrocontrollerarkitekturen blev udviklet i 1996 af Atmel.
Spørgsmål: Hvilken arkitektur er AVR-mikrocontrolleren baseret på?
A: AVR-mikrocontrolleren er baseret på Harvard-mikrocontrollerarkitekturen.
Spørgsmål: Hvad adskiller AVR-mikrocontrolleren fra andre mikrocontrollere på det tidspunkt, hvor den blev udviklet?
A: AVR-mikrocontrolleren anvender on-chip flash-hukommelse til programlagring i modsætning til engangsprogrammerbar ROM, EPROM eller EEPROM, der blev anvendt af andre mikrocontrollere på daværende tidspunkt.
Sp: Hvad er den almindeligt antaget betydning af forkortelsen AVR?
A: Mange mennesker tror, at AVR står for Alf (Egil Bogen) og Vegard (Wollan)'s Risc-processor.
Spørgsmål: Hvilken arkitektur erstattede AVR-mikrocontrolleren?
A: AVR-mikrocontrolleren erstattede den ældre MCS-51-arkitektur.
Spørgsmål: Hvor mange clockcyklusser tager en maskincyklus i MCS-51?
A: En maskincyklus i MCS-51 tager 12 clockcyklusser.
Spørgsmål: Hvad er fordelen ved AVR-mikrocontrollere i forhold til MCS-51 med hensyn til ydeevne pr. clockcyklus?
A: Ydelsen pr. clockcyklus er 12 gange højere med AVR-mikrocontrollere.
Søge