AVR
Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den
version , der blev gennemgået den 25. december 2015; verifikation kræver
41 redigeringer .
AVR er en familie af otte-bit mikrocontrollere , tidligere fremstillet af Atmel , derefter af Microchip . Udviklingsår - 1996 .
Historien om AVR-arkitekturen
Ideen om at udvikle en ny RISC - kerne tilhører to studerende fra det norske universitet for naturvidenskab og teknologi (NTNU) fra den norske by Trondheim - Alf-Egil Bogen og Vegard Wollen. I 1995 besluttede Bogen og Wollen at foreslå det amerikanske selskab Atmel , som var kendt for sine Flash-hukommelseschips , at frigive en ny 8-bit RISC-mikrocontroller og forsyne den med Flash-hukommelse til programmer på en enkelt chip med en computerkerne.
Idéen blev godkendt af Atmel Corp., og det blev besluttet straks at investere i denne udvikling. I slutningen af 1996 blev en eksperimentel AT90S1200 mikrocontroller frigivet, og i anden halvdel af 1997 begyndte Atmel Corporation masseproduktion af en ny familie af mikrocontrollere, deres reklame og teknisk support.
Den nye kerne blev patenteret og fik navnet AVR . Der er flere fortolkninger af denne forkortelse. Nogen hævder, at dette er A avanceret Virtual R ISC, andre mener, at A lf Egil Bogen V egard Wollan R ISC
ikke kunne have været her.
Beskrivelse af arkitektur
AVR-mikrocontrollere har en Harvard-arkitektur (programmet og data er i forskellige adresserum) og et kommandosystem tæt på RISC -ideologien . AVR-processoren har 32 8-bit generelle registre kombineret til en registerfil. I modsætning til den "ideelle" RISC er registrene ikke absolut ortogonale:
- Nogle kommandoer virker kun med registre r16…r31. Disse omfatter øjeblikkelige operand-instruktioner: ANDI/CBR, ORI/SBR, CPI, LDI, LDS (16-bit), STS (16-bit), SUBI, SBCI og SER og MULS;
- Instruktioner, der øger og formindsker en 16-bit værdi (på modeller, hvor de er tilgængelige) med en øjeblikkelig operand (ADIW, SBIW) virker på kun ét af parrene r25:r24, r27:r26 (X), r29:r28 (Y eller r31:r30(Z);
- Kommandoen til at kopiere et par registre (i de modeller, hvor de er tilgængelige) virker kun med naboregistre, der starter med ulige (r1:r0, r3:r2, ..., r31:r30);
- Resultatet af multiplikation (i de modeller, der har et multiplikationsmodul) placeres altid i r1:r0. Desuden bruges kun dette par som operander til selvprogrammeringsinstruktionen (hvor tilgængelig);
- Nogle varianter af multiplikationsinstruktionerne tager som argumenter kun registre fra området r16 ... r23 (FMUL, FMULS, FMULSU, MULSU).
Kommandosystem
Kommandosystemet for AVR-mikrocontrollere er højt udviklet og inkluderer fra 90 til 135 [1] forskellige instruktioner i forskellige modeller.
De fleste instruktioner fylder kun 1 hukommelsesplacering (16 bit).
De fleste kommandoer udføres i 1 cyklus .
Hele sættet af AVR-mikrocontroller-kommandoer kan opdeles i flere grupper:
- kommandoer for logiske operationer;
- aritmetiske instruktioner og skift instruktioner;
- bitdriftsinstruktioner;
- dataoverførselskommandoer;
- kontrol overførselskommandoer;
- systemstyringskommandoer.
Perifere enheder styres via dataadresserummet. For nemheds skyld er der "forkortede kommandoer" IN / OUT.
Familier af mikrocontrollere
Standard familier:
- tinyAVR(ATtinyxxx ) :
- megaAVR ( ATmega xxx):
- Flash-hukommelse op til 256 KB; SRAM op til 16 KB; EEPROM op til 4 KB;
- Antal input-output linjer 23-86 (samlet antal udgange 28-100);
- Hardware multiplikator;
- Udvidet system af kommandoer og periferiudstyr.
- XMEGA AVR ( ATxmega xxx):
- Flash-hukommelse op til 384 KB; SRAM op til 32 KB; EEPROM op til 4 KB;
- Fire -kanals DMA - controller;
- Innovativt hændelsesbehandlingssystem.
Som regel angiver tallene efter præfikset mængden af indbygget flashhukommelse (i KB) og ændringen af controlleren. Nemlig den maksimale effekt på to efter præfikset angiver mængden af hukommelse, og de resterende tal bestemmer modifikationen (for eksempel ATmega128 - 128 KB hukommelse; ATmega168 - 16 KB hukommelse, modifikation 8; ATtiny44 og ATtiny45 - 4 KB hukommelse, modifikation 4 og 5, henholdsvis).
På basis af standardfamilier produceres mikrocontrollere, tilpasset til specifikke opgaver:
- med integrerede interfaces USB , CAN , LCD controller ;
- med indbygget radiotransceiver - ATAxxxx , ATAMxxx-serien ;
- til motorstyring - AT90PWMxxxx -serien ;
- til bilelektronik ;
- til lysteknologi .
Ud over ovennævnte familier producerer ATMEL 32-bit mikrocontrollere af AVR32 -familien , som inkluderer AT32UC3 (clockfrekvens op til 66 MHz) og AT32AP7000 (clockfrekvens op til 150 MHz) underfamilierne.
Controllerversioner
AT (mega/tiny)xxx er den grundlæggende version.
ATxxx L - versioner af controllere, der arbejder ved en reduceret (lav) forsyningsspænding (2,7 V).
ATxxx V - versioner af controllere, der arbejder på lav forsyningsspænding (1,8 V).
ATxxx P - versioner med lavt strømforbrug (op til 100 nA i Power-down-tilstand), picoPower- teknologi bruges (annonceret i juli 2007), pin-out og funktionelt kompatibel med tidligere versioner.
ATxxx A - strømforbrug reduceres, hele spektret af clockfrekvenser og forsyningsspændinger fra de to tidligere versioner er dækket (også i nogle modeller tilføjes nye funktioner og nye registre, men fuld kompatibilitet med tidligere versioner er bevaret). Mikrocontrollere "A" og "non-A" har normalt den samme signatur, hvilket forårsager nogle vanskeligheder, da Fuse-bits er forskellige.
Modelnummeret efterfølges af et indeks, der angiver versionen. Tallene (8, 10, 16, 20) før indekset angiver den maksimale frekvens, ved hvilken mikrocontrolleren kan fungere stabilt ved sin normale forsyningsspænding).
Det første bogstav i indekset angiver skrogvarianten:
ATxxx- P - DIP-pakke
ATxxx- A - TQFP
-
pakke ATxxx - J - PLCC-pakke
ATxxx- M - MLF
-
pakke ATxxx- MA - UDFN/USON-pakke
ATxxx- C - CBGA-
pakke ATxxx- CK - LGA - pakke
ATxxx- S - EIAJ-pakke SOIC
ATxxx- SS - JEDEC SOIC smal pakke
ATxxx- T - TSOP -
pakke ATxxx- TS - SOT-23- pakke (ATtiny4/5/9/10)
ATxxx- X - TSSOP -pakke
Følgende bogstav betyder temperaturområdet og produktionsegenskaber:
ATxxx-x C - kommercielt temperaturområde (0 °C - 70 °C)
ATxxx-x A - temperaturområde -20 °C - +85 °C, ved brug af blyfrit loddemiddel
ATxxx-x I - industrielt temperaturområde (-40 °C C - +85 °C)
ATxxx-x U - Industrielt temperaturområde (-40 °C - +85 °C), ved brug af blyfrit loddemiddel
ATxxx-x H - Industrielt temperaturområde (-40 °C - +85 °C) , ved hjælp af NiPdAu
ATxxx-x N - udvidet temperaturområde (-40 °C - +105 °C), ved brug af blyfrit lodning
ATxxx-x F - udvidet temperaturområde (-40 °C - +125 °C)
ATxxx-x Z - biltemperaturområde (-40 °C - +125 °C)
ATxxx-x D - udvidet biltemperaturområde (-40 °C - +150 °C)
det sidste bogstav R står for Tape & Reel-emballage til automatiserede montagesystemer.
I/O-enheder MK
MK AVR har en udviklet periferi:
- Op til 86 multifunktionelle tovejs GPIO I/O-linjer kombineret til 8-bit I/O-porte . Afhængigt af den softwaredefinerede konfiguration kan registrene fungere uafhængigt af hinanden i den "stærke" drivertilstand, afgive eller modtage (til jord) strøm op til 40 mA , hvilket er nok til at forbinde LED-indikatorer. Enhver af portbenene kan konfigureres til at "input" enten i en fri tilstand eller ved hjælp af den indbyggede pull-up (positive) modstand.
- Op til 3 eksterne afbrydelseskilder (ved kant, cutoff eller niveau) og op til 32 ved at ændre niveauet ved indgangen.
- Som kilde til urimpulser kan du vælge:
- keramisk eller kvartsresonator (ikke alle modeller);
- eksternt ur signal;
- kalibreret intern RC-oscillator (frekvens 1, 2, 4, 8 MHz, og også, for nogle ATtiny-modeller, 4,8, 6,4, 9,6 MHz og 128 kHz).
- Intern flash- instruktionshukommelse op til 256 KB (mindst 10.000 skrivecyklusser).
- Programfejlretning udføres ved hjælp af JTAG- eller debugWIRE-grænseflader :
- JTAG- signaler (TMS, TDI, TDO og TCK) multiplekses pr. I/O-port. Driftsmåden - JTAG eller port - indstilles af den tilsvarende bit i sikringsregisteret. AVR MCU'er kommer med JTAG aktiveret.
- Intern EEPROM -datahukommelse op til 4 KB (ATmega/ATxmega)/512 bytes (ATtiny) (op til 100.000 skrivecyklusser).
- Intern SRAM op til 32 KB (ATxmega)/16 KB (ATmega)/1 KB (ATtiny) med 2-cyklus adgangstid.
- Ekstern hukommelse op til 64 KB (ATmega8515, ATmega162, ATmega640, ATmega641, ATmega1280, ATmega1281, ATmega2560, ATmega256).
- Timer med 8, 16 bit.
- PWM -modulator (PWM) 8-, 9-, 10-, 16-bit.
- analoge komparatorer.
- ADC (ADC) med differentielle input, 8 (ATtiny)/10 (ATtiny/ATmega)/12 (ATxmega) bit:
- programmerbar forstærkning før ADC 1, 10 og 200 (i differentiel tilstand);
- referencespændingen kan være: forsyningsspænding, ekstern spænding eller intern ukalibreret referencespænding på ca. 2,56 V (for modeller med en minimum forsyningsspænding på 2,7 V og højere) eller 1,1 V (med en minimum forsyningsspænding på 1, 8 V ).
- Forskellige serielle grænseflader, herunder:
- USB -serien AT90USBxxxx.
- CAN -serien AT90CANxxx.
- LCD -serien ATmega169 og ATmega329 .
- Temperaturfølere ATtiny25 , ATtiny45 , ATtiny85 .
- Næsten alle (med undtagelse af nogle tidlige ATtiny-modeller, som har en speciel grænseflade til omprogrammering) understøtter in-circuit-programmering (ISP) via SPI -seriegrænsefladen . Mange mikrocontrollere understøtter alternativ seriel eller parallel programmering ved brug af højspænding, i tilfælde af at sikringsregistrene er blevet konfigureret, så konventionel programmering ikke er tilgængelig.
- Understøttelse af selvprogrammering, hvor hovedprogrammet kan ændre en del af sin kode.
- Understøttelse af opstart af hovedprogrammet ved hjælp af en skrivebeskyttet subrutine (bootloader). Hovedprogramkoden modtages normalt gennem en af mikrocontrollerportene ved hjælp af en af standardprotokollerne.
- En række tilstande med reduceret strømforbrug.
Bemærk: Ikke alle eksterne enheder kan aktiveres af software. Nogle af dem skal først aktiveres af bits i sikringsregistrene, som kun kan ændres af programmøren.
Udviklingsværktøjer
Udviklingshardware
Atmels officielle AVR-udviklingsværktøjer:
- STK600 startsæt
- STK500 startsæt
- STK200 startsæt
- AVRISP og AVRISP mkII
- AVR Dragon
- USBasp-USB
- JTAGICE mkI
- JTAGICE mkII
- JTAGICE3
- ATMEL-ICE
- AVR ONE!
- Butterfly demonstrationstavle
- AT90USB-nøgle
- Raven trådløst sæt
Der er også mange tredjepartsværktøjer, især amatørværktøjer.
Udviklingssoftware
Gratis
- Algorithm Builder er et algoritmisk softwareudviklingsmiljø til mikrocontrollere med AVR-arkitektur (sidst opdateret i 2010).
- AVR-Eclipse er et plug-in til Eclipse udviklingsmiljøet, der giver dig mulighed for at udvikle programmer i C/C++ og assembler, programmere og fejlfinde controllere ved hjælp af en ekstern værktøjskæde (Atmel AVR Toolchain, WinAVR)
- avra er en konsol makro assembler til Linux/MacOS.
- Avrdude er et værktøj til at blinke mikrocontrollere.
- AVRDUDE_PROG 3.1 - visuel editor.
- Code::Blocks er et udviklingsmiljø på tværs af platforme.
- DDD er en grafisk grænseflade til avr-gdb.
- eXtreme Burner - AVR er et grafisk interface til USBasp-baserede USB AVR-programmører.
- Khazama AVR Programmer er en Windows GUI til USBasp og avrdude.
- PonyProg er en universel programmør via LPT-port, COM-port (USB-emulator af COM-port er også understøttet).
- V-USB er en softwareimplementering af USB-protokollen til AVR-mikrocontrollere.
- WinAVR er en softwarepakke til Windows , der inkluderer en compiler, assembler, linker og andre værktøjer.
- Zadig 2.3
Proprietær
- Atmel Studio er en gratis IDE fra Atmel selv
- IAR AVR - kommercielt udviklingsmiljø for AVR mikrocontrollere
- Bascom-avr er et udviklingsmiljø baseret på et Basic - lignende programmeringssprog.
- CodeVisionAVR - C compiler og programmør - CVAVR, indledende kodegenerator.
- Proteus er en simulator af elektriske kredsløb, komponenter, herunder forskellige MK og andet perifert udstyr.
AVR-arkitekturen tillader også brug af operativsystemer i applikationsudvikling, for eksempel FreeRTOS , uOS , ChibiOS / RT , scmRTOS ( C ++ ), TinyOS , Femto OS og andre, samt Linux på AVR32 . [2]
Se også
Links
Noter
- ↑ Arkiveret kopi . Hentet 28. januar 2021. Arkiveret fra originalen 6. maj 2021. (ubestemt)
- ↑ AVR32737: AVR32 AP7 Linux Kom godt i gang (februar 2008). Hentet 24. april 2017. Arkiveret fra originalen 29. marts 2017. (ubestemt)