AVR -mikrokontroller - AVR microcontrollers
AVR är en familj av mikrokontroller som utvecklats sedan 1996 av Atmel , som förvärvades av Microchip Technology 2016. Dessa är modifierade Harvard-arkitektur 8-bitars RISC single-chip mikrokontroller. AVR var en av de första mikrokontrollerfamiljerna som använde flashminne på chip för programlagring, i motsats till en gång programmerbar ROM , EPROM eller EEPROM som används av andra mikrokontroller på den tiden.
AVR -mikrokontroller hittar många applikationer som inbyggda system . De är särskilt vanliga i hobbybaserade och pedagogiska inbäddade applikationer, populariserade genom att de ingår i många av Arduino -serierna med öppna hårdvaruutvecklingskort .
Historia
AVR-arkitekturen tänktes av två studenter vid Norwegian Institute of Technology (NTH), Alf-Egil Bogen och Vegard Wollan.
Atmel säger att namnet AVR inte är en förkortning och inte står för något särskilt. Skaparna av AVR ger inget definitivt svar på vad termen "AVR" står för. Det är emellertid allmänt accepterat att AVR står för A lf och V egards R ISC -processor. Observera att användningen av "AVR" i denna artikel i allmänhet hänvisar till 8-bitars RISC-linjen för Atmel AVR-mikrokontroller.
Den ursprungliga AVR MCU utvecklades vid ett lokalt ASIC -hus i Trondheim, Norge , kallat Nordic VLSI på den tiden, nu Nordic Semiconductor , där Bogen och Wollan arbetade som studenter. Det var känt som ett μRISC (Micro RISC) och var tillgängligt som kisel IP/byggsten från Nordic VLSI. När tekniken såldes till Atmel från Nordic VLSI utvecklades den interna arkitekturen vidare av Bogen och Wollan på Atmel Norge, ett dotterbolag till Atmel. Konstruktörerna arbetade nära med kompilatorförfattare på IAR Systems för att säkerställa att AVR-instruktionsuppsättningen gav en effektiv sammanställning av språk på hög nivå .
Bland de första på AVR-linjen fanns AT90S8515, som i ett 40-stifts DIP-paket har samma pinout som en 8051 mikrokontroller, inklusive den externa multiplexade adressen och databussen. Polariteten för RESET- linjen var motsatt (8051 har en aktiv-hög RESET, medan AVR har en aktiv-låg RESET ), men annat än att pinout var identisk.
AVR 8-bitars mikrokontrollerarkitektur introducerades 1997. År 2003 hade Atmel skickat 500 miljoner AVR-flashmikrocontroller. Den Arduino plattform, utvecklad för enkla elektronik projekt, släpptes 2005 och innehöll ATmega8 AVR mikrokontroller.
Enhetsöversikt
AVR är en modifierad Harvard -arkitekturmaskin, där program och data lagras i separata fysiska minnessystem som visas i olika adressutrymmen, men som har möjlighet att läsa data från programminnet med hjälp av speciella instruktioner.
Grundläggande familjer
AVR klassificeras vanligtvis i följande:
tinyAVR - ATtiny -serien
| Blixtstorlek | Frekvens [MHz] |
Paket | SRAM | EEPROM | Utgivningsår |
|---|---|---|---|---|---|
| 0,5 - 32 kB | 1,6 - 20 | 6-32 pin-paket | 64-3072 byte | 64 - 256 byte | 2016 |
ATtiny -serien har en liten paketmikrokontroller med en begränsad kringutrustning tillgänglig. Detta inkluderar dock:
- Kringutrustning som är lika med eller överstiger megaAVR 0-serien
- Händelsessystem
- Förbättrad AVRxt -instruktionsuppsättning, hårdvara multiplicera
megaAVR - ATmega -serien
| Blixtstorlek | Frekvens [MHz] |
Paket | SRAM | EEPROM | Utgivningsår |
|---|---|---|---|---|---|
| 4 - 256 kB | 1,6 - 20 | 28-100 stift-paket | 256 - 8192 byte | 256 - 4096 byte | 2016 |
ATmega -serien har en mikrokontroller som ger en gedigen mängd programminne, liksom ett stort antal tillgängliga stift. Den har också funktioner som:
- Utökad instruktionsuppsättning (multiplicera instruktioner och instruktioner för hantering av större programminnen)
- Omfattande kringutrustning '
- Händelsessystem
- Nya kringutrustning med förbättrad funktionalitet
- Förbättrad AVRxt -instruktionsuppsättning
AVR Dx - AVR Dx -familjen har flera mikrokontroller -serier med fokus på HCI , analog signalkonditionering och funktionell säkerhet.
| Blixtstorlek | Frekvens [MHz] |
Paket | SRAM | EEPROM | Utgivningsår |
|---|---|---|---|---|---|
| 16 - 128 kB | 20 - 24 vid 1.8-5.5V | 14 - 64 stift -paket | 4 - 16 KB | 512 byte | 2020 |
Delnumren är formaterade som AVRffDxpp, där ff är flashstorlek, x är familj och pp är antal stift. Exempel: AVR128DA64-64-stifts DA-serie med 128k blixt Alla enheter är denna familj inkluderar:
- en Async Type D -timer som kan köras snabbare än CPU
- 12-bitars ADC
- 10-bitars DAC
- AVR DA-serien (tidigt 2020)-Den höga minnestätheten gör dessa MCU: er väl lämpade för både trådbundna och trådlösa kommunikationsstackintensiva funktioner.
-
AVR DB-serien (mitten av slutet av 2020)-ärver många funktioner från DA-familjen, samtidigt som den lägger till sin egen;
- Lägger till 2 eller 3 on-chip opamps
- MultiVoltage IO (MVIO) på PORTC
- Stöder extern HF -kristall
-
AVR DD-serien (ännu inte släppt från och med september 2021)-mikropaket för små paket som är utformade för att ge realtidskontroll och flerspänningsdrift till applikationer, industriell styrning, hushållsapparater, bilar och Internet of Things (IoT).
- MVIO -stöd på 3 eller 4 stift
-
AVR EA-serien (ännu inte släppt från och med september 2021)
- 8-64k blixt
- 28-48 stifts paket
XMEGA
| Blixtstorlek | Frekvens [MHz] |
Paket | SRAM | EEPROM | Utgivningsår |
|---|---|---|---|---|---|
| 16 - 256 kB | 32 | 44-100 stift-paket | 1 - 32 KB | 512 - 2048 byte | - |
ATxmega -serien erbjuder ett brett utbud av kringutrustning och funktioner såsom;
- Utökade prestandafunktioner, till exempel DMA, "Event System" och kryptografistöd
- Omfattande kringutrustning med ADC
Applikationsspecifik AVR
- megaAVR med specialfunktioner som inte finns på de andra medlemmarna i AVR -familjen, såsom LCD -kontroller, USB -kontroller, avancerad PWM, CAN, etc.
FPSLIC (AVR med FPGA)
- FPGA 5k till 40k grindar
- SRAM för AVR -programkoden, till skillnad från alla andra AVR
- AVR -kärnan kan köras med upp till 50 MHz
32-bitars AVR
- 2006 släppte Atmel mikrokontroller baserade på 32-bitars AVR32- arkitekturen. Detta var en helt annan arkitektur som inte var relaterad till 8 -bitars AVR, avsedd att konkurrera med ARM -baserade processorer. Den hade en 32-bitars dataväg, SIMD- och DSP- instruktioner, tillsammans med andra ljud- och bildbehandlingsfunktioner. Instruktionsuppsättningen liknade andra RISC -kärnor, men den var inte kompatibel med den ursprungliga AVR (inte heller någon av de olika ARM -kärnorna). Sedan dess har stödet för AVR32 tappats från Linux från kärnan 4.12; kompilatorstöd för arkitekturen i GCC var aldrig huvudlinjer i kompilatorns centrala källkodlager och var främst tillgängligt i en leverantörsstödd gaffel. Vid den tidpunkt då AVR32 introducerades hade Atmel redan varit licensinnehavare av ARM -arkitekturen , med både ARM7 och ARM9 mikrokontroller som hade släppts före och samtidigt med AVR32; senare fokuserade Atmel mest utvecklingsarbete på 32-bitars chips med ARM Cortex-M och Cortex-A kärnor.
Enhetsarkitektur
Flash , EEPROM och SRAM är alla integrerade på ett enda chip, vilket tar bort behovet av externt minne i de flesta applikationer. Vissa enheter har ett parallellt externt bussalternativ som gör det möjligt att lägga till ytterligare dataminne eller minneskartade enheter. Nästan alla enheter (förutom de minsta TinyAVR -chipsen) har seriella gränssnitt, som kan användas för att ansluta större seriella EEPROM eller flashchips.
Programminne
Programinstruktioner lagras i icke-flyktigt flashminne . Även om MCU: erna är 8-bitars, tar varje instruktion ett eller två 16-bitars ord.
Storleken på programminnet anges vanligtvis i namnet på själva enheten (t.ex. har ATmega64x -linjen 64 kB flash, medan raden ATmega32x har 32 kB).
Det finns ingen avsättning för off-chip-programminne; all kod som exekveras av AVR-kärnan måste finnas i flash-chipet. Denna begränsning gäller dock inte för AT94 FPSLIC AVR/FPGA -chips.
Internt dataminne
Dataadressutrymmet består av registerfilen , I / O-register och SRAM . Vissa små modeller kartlägger också program -ROM: et till dataadressutrymmet, men större modeller gör det inte.
Interna register
De AVRs har 32 enkelbyteregister och klassificeras som 8-bitars RISC-enheter.
I tinyAVR och megaAVR varianter av AVR arkitektur, är de arbetande register mappas in som de första 32 minnesadresser (0000 16 -001F 16 ), följt av 64 I / O-registren (0020 16 -005F 16 ). I enheter med många kringutrustning följs dessa register av 160 “utökade I/O” -register, endast tillgängliga som minneskartade I/O (0060 16 –00FF 16 ).
Faktisk SRAM startar efter dessa registeravsnitt, på adressen 0060 16 eller, i enheter med "utökad I/O", vid 0100 16 .
Även om det finns separata adresseringsscheman och optimerade opkoder för åtkomst till registerfilen och de första 64 I/O -registren kan alla också adresseras och manipuleras som om de vore i SRAM.
Den allra minsta av de små AVR -varianterna använder en reducerad arkitektur med endast 16 register (r0 till r15 utelämnas) som inte är adresserbara som minnesplatser. I/O -minne börjar på adressen 0000 16 , följt av SRAM. Dessutom har dessa enheter små avvikelser från standard AVR -instruktionsset. Framför allt har instruktionerna för direkt belastning/lagring (LDS/STS) reducerats från 2 ord (32 bitar) till 1 ord (16 bitar), vilket begränsar det totala direkt adresserbara minnet (summan av både I/O och SRAM) till 128 byte. Omvänt utvidgas den indirekta belastningsinstruktionens (LD) 16-bitars adressutrymme till att även inkludera icke-flyktigt minne såsom Flash och konfigurationsbitar; därför är Load Program Memory (LPM) instruktion onödig och utelämnad. (För detaljerad information, se Atmel AVR instruktionsset .)
I XMEGA -varianten mappas inte arbetsregisterfilen i datadressutrymmet; som sådan är det inte möjligt att behandla några av XMEGA: s arbetsregister som om de vore SRAM. Istället mappas I/O -registren in i dataadressutrymmet som börjar i början av adressutrymmet. Dessutom har mängden datadressutrymme avsett för I/O -register väsentligt ökat till 4096 byte (0000 16 –0FFF 16 ). Liksom med tidigare generationer kan dock de snabba I/O -manipulationsinstruktionerna endast nå de första 64 I/O -registerplatserna (de första 32 platserna för bitvisa instruktioner). Efter I/O -registren avsätter XMEGA -serien ett 4096 byte intervall för datadressutrymmet, som kan användas som tillval för att mappa den interna EEPROM till dataadressutrymmet (1000 16 –1FFF 16 ). Den faktiska SRAM ligger efter dessa intervall, med början 2000 16 .
GPIO -portar
Varje GPIO- port på en liten eller mega AVR driver upp till åtta stift och styrs av tre 8-bitars register: DDR x , PORT x och PIN x , där x är portidentifieraren.
- DDR x : Data Direction Register, konfigurerar stiften som antingen ingångar eller utgångar.
- PORT x : Utmatningsportregister. Ställer in utgångsvärdet på stift konfigurerade som utgångar. Aktiverar eller inaktiverar uppdragningsmotståndet på stift som är konfigurerade som ingångar.
- PIN x : Inmatningsregister, används för att läsa en insignal. På vissa enheter kan detta register användas för stiftväxling: att skriva en logisk en till en PIN x -bit växlar motsvarande bit i PORT x , oberoende av inställningen för DDR x -bit.
Nyare ATtiny AVR, liksom ATtiny817 och dess syskon, har sina portkontrollregister något annorlunda definierade. xmegaAVR har ytterligare register för push/pull, totem-pol och pullup-konfigurationer.
EEPROM
Nästan alla AVR-mikrokontroller har intern EEPROM för semi-permanent datalagring. Precis som flashminne kan EEPROM behålla innehållet när elkraften tas bort.
I de flesta varianter av AVR -arkitekturen mappas detta interna EEPROM -minne inte in i MCU: s adresserbara minnesutrymme. Den kan endast nås på samma sätt som en extern kringutrustning, med hjälp av speciella pekarregister och läs-/skrivinstruktioner, vilket gör EEPROM -åtkomst mycket långsammare än annat internt RAM -minne.
Vissa enheter i SecureAVR (AT90SC) -familjen använder dock en särskild EEPROM -mappning till data- eller programminnet, beroende på konfigurationen. XMEGA -familjen gör också att EEPROM kan mappas in i datadressutrymmet.
Eftersom antalet skrivningar till EEPROM är begränsat - Atmel anger 100 000 skrivcykler i sina datablad - bör en väl utformad EEPROM -skrivrutin jämföra innehållet i en EEPROM -adress med önskat innehåll och endast utföra en faktisk skrivning om innehållet behöver ändras.
Observera att radering och skrivning kan utföras separat i många fall, byte för byte, vilket också kan hjälpa till att förlänga livslängden när bitar bara behöver ställas in på alla 1: or (radera) eller selektivt rensas till 0s (skriva).
Programkörning
Atmels AVR-apparater har en tvåstegs rörledning på en nivå . Detta innebär att nästa maskininstruktion hämtas när den nuvarande körs. De flesta instruktioner tar bara en eller två klockcykler, vilket gör AVR: er relativt snabba bland åtta-bitars mikrokontroller.
AVR-processorerna har utformats med tanke på effektiv körning av kompilerad C- kod och har flera inbyggda pekare för uppgiften.
Instruktionsuppsättning
Den AVR instruktionsuppsättning är mer ortogonala än de flesta åttabitars mikrokontroller, i synnerhet 8051 kloner och PIC mikrokontroller som AVR konkurrerar idag. Det är dock inte helt vanligt:
- Pekarregister X, Y och Z har adresseringsfunktioner som skiljer sig från varandra.
- Registrera platser R0 till R15 har mer begränsade adresseringsmöjligheter än registerplatser R16 till R31.
- I/O -portar 0 till 31 kan bitadresseras, till skillnad från I/O -portar 32 till 63.
- CLR (rensa alla bitar till noll) påverkar flaggor, medan SER (ställ in alla bitar till en) inte, även om de är kompletterande instruktioner. )
- För åtkomst till skrivskyddad data som lagras i programminnet (blixt) krävs särskilda LPM-instruktioner; flashbussen är annars reserverad för instruktionsminne.
Dessutom påverkar vissa chipspecifika skillnader kodgenerering. Kodpekare (inklusive returadresser på stacken) är två byte långa på chips med upp till 128 KB flashminne, men tre byte långa på större chips; inte alla marker har hårdvarumultiplikatorer; chips med över 8 KB flash har filial- och samtalsinstruktioner med längre räckvidd; och så vidare.
Den mest vanliga instruktionsuppsättningen gör det enkelt att programmera den med C (eller till och med Ada) kompilatorer. GCC har inkluderat AVR -stöd ganska länge, och det stödet används i stor utsträckning. LLVM har också rudimentärt AVR -stöd. Faktum är att Atmel begärde input från stora utvecklare av kompilatorer för små mikrokontroller för att bestämma instruktionsuppsättningsfunktionerna som var mest användbara i en kompilator för språk på hög nivå.
MCU -hastighet
AVR -linjen kan normalt stödja klockhastigheter från 0 till 20 MHz, medan vissa enheter når 32 MHz. Lägre effekt kräver vanligtvis en reducerad klockhastighet. Alla de senaste AVR: erna (Tiny, Mega och Xmega, men inte 90S) har en on-chip-oscillator som tar bort behovet av externa klockor eller resonatorkretsar. Vissa AVR har också en systemklocka förskalare som kan dela upp systemklockan med upp till 1024. Denna förkalkylator kan omkonfigureras med programvara under körning, så att klockhastigheten kan optimeras.
Eftersom alla operationer (exklusive multiplikation och 16-bitars add/subtrahering) på registren R0 – R31 är encyklade kan AVR uppnå upp till 1 MIPS per MHz, dvs en 8 MHz processor kan uppnå upp till 8 MIPS. Laddar och lagrar till/från minne tar två cykler, förgrening tar två cykler. Grenar i de senaste "3-byte PC" -delarna som ATmega2560 är en cykel långsammare än på tidigare enheter.
Utveckling
AVR har en stor följd på grund av de kostnadsfria och billiga utvecklingsverktygen som finns tillgängliga, inklusive prisvärda utvecklingsbrädor och gratis utvecklingsprogram. AVR: erna säljs under olika namn som har samma grundläggande kärna, men med olika kringutrustning och minneskombinationer. Kompatibiliteten mellan chips i varje familj är ganska bra, även om I/O -controllerfunktioner kan variera.
Se externa länkar för webbplatser som rör AVR -utveckling.
Funktioner
AVRs erbjuder ett brett utbud av funktioner:
- Multifunktionella, dubbelriktade I/O-portar för allmänt bruk med konfigurerbara, inbyggda pull-up-motstånd
- Flera interna oscillatorer, inklusive RC -oscillator utan externa delar
- Intern, självprogrammerbar instruktion flashminne upp till 256 KB (384 KB på XMega)
- Programmerbar i systemet med seriella/parallella lågspännings proprietära gränssnitt eller JTAG
- Valfri startkodsektion med oberoende låsbitar för skydd
- On-chip debugging (OCD) stöd via JTAG eller debugWIRE på de flesta enheter
- JTAG -signalerna (TMS, TDI, TDO och TCK) är multiplexerade på GPIO: er . Dessa stift kan konfigureras att fungera som JTAG eller GPIO beroende på inställningen av en säkringsbit, som kan programmeras via ISP eller HVSP. Som standard kommer AVR med JTAG med JTAG -gränssnittet aktiverat.
- debugWIRE använder /RESET-stiftet som en dubbelriktad kommunikationskanal för att komma åt on-chip-felsökningskretsar. Det finns på enheter med lägre stiftantal, eftersom det bara kräver en stift.
- Intern data EEPROM upp till 4 KB
- Intern SRAM upp till 16 KB (32 KB på XMega)
- Externt 64 KB litet endiandatautrymme på vissa modeller, inklusive Mega8515 och Mega162.
- Det externa datarummet är överlagrat med det interna datarummet, så att hela 64 KB -adressutrymmet inte visas på den externa bussen och åtkomst till t.ex. adressen 0100 16 kommer att komma åt internt RAM, inte den externa bussen.
- I vissa medlemmar i XMega -serien har det externa datautrymmet förbättrats för att stödja både SRAM och SDRAM. Likaså har datadresseringslägen utökats så att upp till 16 MB dataminne kan adresseras direkt.
- 8-bitars och 16-bitars timers
- PWM- utgång (vissa enheter har en förbättrad PWM-kringutrustning som inkluderar en dead-time-generator)
- Inmatningsfångst som registrerar en tidsstämpel som utlöses av en signalkant
- Analog komparator
- 10 eller 12-bitars A/D-omvandlare , med multiplex upp till 16 kanaler
- 12-bitars D/A-omvandlare
- En mängd seriella gränssnitt, inklusive
- I²C- kompatibelt tvåtrådigt gränssnitt (TWI)
- Synkrona /asynkrona seriella kringutrustning ( UART /USART) (används med RS-232 , RS-485 och mer)
- Seriell perifer gränssnittsbuss (SPI)
- Universal Serial Interface (USI): en multifunktionell hårdvarukommunikationsmodul som kan användas för att implementera ett SPI-, I 2 C- eller UART-gränssnitt.
- brownout detektion
- Watchdog timer (WDT)
- Flera energisparande vilolägen
- Belysning och motorstyrning ( PWM -specifik) styrmodeller
- CAN -controller stöd
-
Stöd för USB -kontroller
- Rätt fullhastighets (12 Mbit/s) hårdvara och navkontroll med inbyggd AVR.
- Också fritt tillgängliga lågvarviga (1,5 Mbit / s) ( HID ) bitbanging mjukvaru emuleringar
- Stöd för Ethernet -controller
- Stöd för LCD -kontroller
- Lågspänningsanordningar som arbetar ner till 1,8 V (till 0,7 V för delar med inbyggd DC-DC-omvandlare)
- picoPower -enheter
- DMA -styrenheter och "händelsessystem" perifer kommunikation.
- Snabbt kryptografistöd för AES och DES
Programmeringsgränssnitt
Det finns många sätt att ladda programkod till ett AVR -chip. Metoderna för att programmera AVR -chips varierar från AVR -familj till familj. De flesta av metoderna som beskrivs nedan använder RESET -raden för att gå in i programmeringsläge. För att undvika att chipet kommer in i ett sådant läge av misstag, rekommenderas det att du kopplar ett dragmotstånd mellan RESET- stiftet och den positiva strömförsörjningen.
Internetleverantör
In -system programmering (ISP) programmeringsmetod utförs funktionellt via SPI , plus viss twiddling av Reset-linjen. Så länge SPI -stiften på AVR -enheten inte är anslutna till något störande kan AVR -chipet fortsätta att lödas på ett kretskort vid omprogrammering. Allt som behövs är en 6-polig kontakt och programmeringsadapter. Detta är det vanligaste sättet att utvecklas med en AVR.
Atmel-ICE-enheten eller AVRISP mkII (äldre enhet) ansluter till en dators USB-port och utför programmering i systemet med Atmels programvara.
AVRDUDE (AVR Downloader/UploaDEr) körs på Linux , FreeBSD , Windows och Mac OS X och stöder en mängd olika maskinvaror i systemet, inklusive Atmel AVRISP mkII, Atmel JTAG ICE, äldre Atmel serieportbaserade programmerare och olika programmerare från tredje part och "gör-det-själv".
PDI
Program- och felsökningsgränssnittet (PDI) är ett Atmel-gränssnitt för extern programmering och on-chip-felsökning av XMEGA-enheter. PDI stöder höghastighetsprogrammering av alla icke-flyktiga minnesutrymmen (NVM); blixt, EEPROM, säkringar, låsbitar och användarsignaturraden. Detta görs genom att komma åt XMEGA NVM -styrenheten via PDI -gränssnittet och utföra NVM -styrkommandon. PDI är ett 2-stifts gränssnitt som använder Reset pin för klockingång (PDI_CLK) och ett dedikerat datastift (PDI_DATA) för input och output.
UPDI
Unified Program and Debug Interface (UPDI) är ett entrådigt gränssnitt för extern programmering och on-chip-felsökning av nyare ATtiny- och ATmega-enheter. Atmel-ICE och PICkit 4 kan programmera UPDI-chips. Det är också möjligt att använda en Arduino tack vare jtag2updi.
Högspänningsseriell
Högspänningsseriell programmering (HVSP) är mestadels backup-läge på mindre AVR. Ett 8-stifts AVR-paket lämnar inte många unika signalkombinationer för att placera AVR i ett programmeringsläge. En 12-voltsignal är dock något AVR bara bör se under programmeringen och aldrig under normal drift. Högspänningsläget kan också användas i vissa enheter där återställningsstiftet har inaktiverats av säkringar.
Högspänningsparallell
Högspännings parallell programmering (HVPP) anses vara den "sista utvägen" och kan vara det enda sättet att korrigera dåliga säkringsinställningar på ett AVR-chip.
Bootloader
De flesta AVR-modeller kan reservera en bootloader- region, 256 byte till 4 KB, där omprogrammeringskod kan finnas. Vid återställningen körs startladdaren först och gör en viss användarprogrammerad bestämning om omprogrammera eller hoppa till huvudprogrammet. Koden kan omprogrammera via valfritt gränssnitt, eller så kan den läsa en krypterad binär via en Ethernet-adapter som PXE . Atmel har applikationsanteckningar och kod för många bussgränssnitt.
ROM
AT90SC-serien AVR finns med en fabriksmask-ROM istället för blixt för programminne. På grund av de stora kostnaderna i förväg och minsta orderkvantitet är en mask-ROM endast kostnadseffektiv för högproduktionskörningar.
en kabel
aWire är ett nytt entrådigt felsökningsgränssnitt tillgängligt på de nya UC3L AVR32-enheterna.
Felsökningsgränssnitt
AVR erbjuder flera alternativ för felsökning, mestadels involverande on-chip-felsökning medan chipet är i målsystemet.
debugWIRE
debugWIRE är Atmels lösning för att tillhandahålla on-chip-felsökningsmöjligheter via en enda mikrokontroller-pin. Det är särskilt användbart för lägre stiftantal som inte kan tillhandahålla de fyra "extra" stiften som behövs för JTAG. JTAGICE mkII, mkIII och AVR Dragon stöder debugWIRE. debugWIRE utvecklades efter den ursprungliga JTAGICE -versionen, och nu stöder kloner det.
JTAG
Joint Test Action Group ( JTAG ) -funktionen ger tillgång till on-chip-felsökningsfunktioner medan chipet körs i målsystemet. JTAG möjliggör åtkomst till internt minne och register, inställning av brytpunkter på kod och utförande i ett steg för att observera systemets beteende.
Atmel tillhandahåller en serie JTAG -adaptrar för AVR:
- Atmel-ICE är den senaste adaptern. Den stöder JTAG, debugWire, aWire, SPI, TPI och PDI gränssnitt.
- JTAGICE 3 är en mellanregisterfelsökare i JTAGICE -familjen (JTAGICE mkIII). Den stöder JTAG-, aWire-, SPI- och PDI -gränssnitt.
- JTAGICE mkII ersätter JTAGICE och är på samma sätt. JTAGICE mkII -gränssnittet till datorn via USB och stöder både JTAG och det nyare debugWIRE -gränssnittet. Många tredjepartskloner av Atmel JTAGICE mkII-enheten började levereras efter att Atmel släppte kommunikationsprotokollet.
- AVR Dragon är ett billigt (cirka $ 50) substitut för JTAGICE mkII för vissa måldelar. AVR Dragon tillhandahåller seriell programmering i systemet, högspänningsprogrammering och parallellprogrammering, samt JTAG- eller debugWIRE-emulering för delar med 32 KB programminne eller mindre. ATMEL ändrade felsökningsfunktionen för AVR Dragon med den senaste firmware från AVR Studio 4 - AVR Studio 5 och nu stöder den enheter över 32 KB programminne.
- JTAGICE -adaptern gränsar till datorn via en standard seriell port. Även om JTAGICE-adaptern har förklarats vara ” livets slut ” av Atmel, stöds den fortfarande i AVR Studio och andra verktyg.
JTAG kan också användas för att utföra ett gränsskanningstest , som testar de elektriska anslutningarna mellan AVR: er och andra gränsskanningsstarka chips i ett system. Gränsskanning är väl lämpad för en produktionslinje, medan hobbyisten förmodligen är bättre på att testa med en multimeter eller oscilloskop.
Utvecklingsverktyg och utvärderingssatser
Officiella Atmel AVR -utvecklingsverktyg och utvärderingssatser innehåller ett antal startpaket och felsökningsverktyg med stöd för de flesta AVR -enheter:
STK600 startkit
STK600 startkit och utvecklingssystem är en uppdatering till STK500. STK600 använder ett baskort, ett signalstyrkort och ett målkort.
Baskortet liknar STK500, eftersom det ger en strömförsörjning, klocka, systemprogrammering, en RS-232-port och en CAN-port (Controller Area Network, en bilstandard) via DE9-kontakter och stiftpinnar för alla GPIO -signaler från målenheten.
Målgrupp styrelser har ZIF uttag för DIP , SOIC , QFN eller QFP paket, beroende på bordet.
Signalstyrkortet sitter mellan baskortet och målkortet och leder signalerna till rätt stift på enhetskortet. Det finns många olika signalöverföringskort som kan användas med ett enda målkort, beroende på vilken enhet som finns i ZIF -uttaget.
STK600 tillåter programmering i systemet från datorn via USB, vilket gör att RS-232-porten är tillgänglig för målmikrocontrollern. En 4- stifts rubrik på STK600 märkt "RS-232 reservdel" kan ansluta valfri TTL-nivå USART-port på chipet till ett inbyggt MAX232-chip för att översätta signalerna till RS-232-nivåer. RS-232-signalerna är anslutna till RX-, TX-, CTS- och RTS-stiften på DB-9-kontakten.
STK500 startkit
STK500 -startpaketet och utvecklingssystemet har ISP och högspänningsprogrammering (HVP) för alla AVR -enheter, antingen direkt eller via förlängningskort. Brädan är utrustad med DIP -uttag för alla AVR -enheter som finns i DIP -paket.
STK500 -expansionsmoduler: Flera expansionsmoduler finns tillgängliga för STK500 -kortet:
- STK501-Lägger till stöd för mikrokontroller i 64-stifts TQFP-paket.
- STK502-Lägger till stöd för LCD-AVR i 64-stifts TQFP-paket.
- STK503-Lägger till stöd för mikrokontroller i 100-stifts TQFP-paket.
- STK504-Lägger till stöd för LCD-AVR i 100-stifts TQFP-paket.
- STK505-Lägger till stöd för 14 och 20-stifts AVR.
- STK520-Lägger till stöd för 14 och 20 och 32-stifts mikrokontroller från AT90PWM och ATmega-familjen.
- STK524-Lägger till stöd för ATmega32M1/C1 32-stifts CAN/LIN/Motor Control-familjen.
- STK525-Lägger till stöd för AT90USB-mikrokontroller i 64-stifts TQFP-paket.
- STK526-Lägger till stöd för AT90USB-mikrokontroller i 32-stifts TQFP-paket.
STK200 startpaket
STK200 startpaket och utvecklingssystem har ett DIP- uttag som kan vara värd för ett AVR-chip i ett 40, 20 eller 8-poligt paket. Kortet har en 4 MHz klockkälla, 8 ljusdioder (LED), 8 ingångsknappar, en RS-232- port, ett uttag för en 32k SRAM och många allmänna I/O. Chippet kan programmeras med en dongel ansluten till parallellporten.
| Chip | Blixtstorlek | EEPROM | SRAM | Frekvens [MHz] |
Paket |
|---|---|---|---|---|---|
| AT90S1200 | 1k | 64 | 0 | 12 | PDIP-20 |
| AT90S2313 | 2k | 128 | 128 | 10 | PDIP-20 |
| AT90S/LS2323 | 2k | 128 | 128 | 10 | PDIP-8 |
| AT90S/LS2343 | 2k | 128 | 128 | 10 | PDIP-8 |
| AT90S4414 | 4k | 256 | 256 | 8 | PDIP-40 |
| AT90S/LS4434 | 4k | 256 | 256 | 8 | PDIP-40 |
| AT90S8515 | 8 K | 512 | 512 | 8 | PDIP-40 |
| AT90S/LS8535 | 8 K | 512 | 512 | 8 | PDIP-40 |
AVRISP och AVRISP mkII
AVRISP och AVRISP mkII är billiga verktyg som gör att alla AVR kan programmeras via ICSP .
AVRISP ansluts till en dator via en seriell port och drar ström från målsystemet. AVRISP möjliggör användning av någon av de "vanliga" ICSP-pinouterna, antingen 10-polig eller 6-polig kontakt.
AVRISP mkII ansluts till en dator via USB och drar ström från USB. Lysdioder som syns genom det genomskinliga fodralet indikerar tillståndet för måleffekten.
Eftersom AVRISP mkII saknar drivrutiner/buffert -IC: er kan det ha problem med att programmera målkort med flera belastningar på sina SPI -linjer. I sådana fall krävs en programmerare som kan få större ström. Alternativt kan AVRISP mkII fortfarande användas om lastbegränsande motstånd med lågt värde (~ 150 ohm) kan placeras på SPI-linjerna före varje kringutrustning.
Både AVRISP och AVRISP mkII avbryts nu, med produktsidor borttagna från Microchips webbplats. Från och med juli 2019 finns AVRISP mkII fortfarande på lager hos ett antal distributörer. Det finns också ett antal tredjepartskloner tillgängliga.
AVR Dragon
Atmel Dragon är ett billigt verktyg som ansluts till en dator via USB. Draken kan programmera alla AVR via JTAG, HVP, PDI eller ICSP. Draken tillåter också felsökning av alla AVR via JTAG, PDI eller debugWire; en tidigare begränsning för enheter med 32 KB eller mindre programminne har tagits bort i AVR Studio 4.18. Draken har ett litet prototypområde som rymmer en 8, 28 eller 40-stifts AVR, inklusive anslutningar till ström- och programmeringsstift. Det finns inget område för ytterligare kretsar, även om detta kan tillhandahållas av en tredjepartsprodukt som kallas "Dragon Rider".
JTAGICE
Den JTAG I Circuit Emulator (JTAGICE) felsökning Verktyget stödjer on-chip debugging (OCD) av AVRs med en JTAG-gränssnitt. Den ursprungliga JTAGICE (ibland retroaktivt kallad JTAGICE mkI) använder ett RS-232-gränssnitt till en PC och kan bara programmera AVR: er med ett JTAG-gränssnitt. JTAGICE mkI är inte längre i produktion, men den har ersatts av JTAGICE mkII.
JTAGICE mkII
JTAGICE mkII-felsökningsverktyget stöder on-chip-felsökning (OCD) för AVR: er med SPI-, JTAG-, PDI- och debugWIRE-gränssnitt. DebugWire-gränssnittet möjliggör felsökning med endast en stift (återställningsnålen), vilket möjliggör felsökning av applikationer som körs på mikrokontroller med låga siffror.
JTAGICE mkII ansluts med USB, men det finns en alternativ anslutning via en seriell port, vilket kräver att man använder en separat strömförsörjning. Förutom JTAG stöder mkII ISP-programmering (med 6-pin eller 10-pin adaptrar). Både USB och seriella länkar använder en variant av STK500 -protokollet.
JTAGICE3
JTAGICE3 uppdaterar mkII med mer avancerade felsökningsfunktioner och snabbare programmering. Den ansluts via USB och stöder JTAG-, aWire-, SPI- och PDI -gränssnitten. Satsen innehåller flera adaptrar för användning med de flesta gränssnittsstiften.
AVR ONE!
AVR ONE! är ett professionellt utvecklingsverktyg för alla Atmel 8-bitars och 32-bitars AVR-enheter med On-Chip Debug-funktion. Den stöder programmeringslägen SPI, JTAG, PDI och aWire och felsökning med gränssnitt för debugWIRE, JTAG, PDI och aWire.
Fjäril demonstrationstavla
Den mycket populära AVR Butterfly-demonstrationskortet är en fristående, batteridriven dator som kör Atmel AVR ATmega169V-mikrokontroller. Det byggdes för att visa upp AVR-familjen, särskilt ett då nytt inbyggt LCD-gränssnitt. Kortet innehåller LCD -skärmen, joystick, högtalare, seriell port, realtidsklocka (RTC), flashminnechip och både temperatur- och spänningssensorer. Tidigare versioner av AVR Butterfly innehöll också en CdS -fotoresistor ; det finns inte på Butterfly -brädor som tillverkats efter juni 2006 för att tillåta RoHS -överensstämmelse. Den lilla brädan har en skjortnål på ryggen så den kan bäras som ett namnmärke.
AVR Butterfly kommer förinstallerad med programvara för att demonstrera mikrokontrollerns funktioner. Fabriks firmware kan rulla ditt namn, visa sensoravläsningarna och visa tiden. AVR Butterfly har också en piezoelektrisk givare som kan användas för att återge ljud och musik.
AVR Butterfly visar LCD-körning genom att köra en 14-segmentig, sex alfanumerisk teckenvisning. LCD -gränssnittet förbrukar dock många av I/O -stiften.
Fjärilens ATmega169 -processor kan ha hastigheter upp till 8 MHz, men den är fabriksinställd på 2 MHz för att bevara knappens batterilivslängd. Ett förinstallerat bootloader-program gör att kortet kan omprogrammeras via en standard RS-232 seriell kontakt med nya program som användare kan skriva med de kostnadsfria Atmel IDE-verktygen.
AT90USBKnapp
Denna lilla bräda, ungefär hälften av ett visitkort, är prissatt till något mer än en AVR -fjäril. Den innehåller en AT90USB1287 med USB On-The-Go (OTG) -stöd, 16 MB DataFlash , lysdioder, en liten joystick och en temperatursensor. Kortet innehåller programvara som låter den fungera som en USB -masslagringsenhet (dokumentationen levereras på DataFlash), en USB -joystick och mer. För att stödja USB -värdskapaciteten måste den drivas från ett batteri, men när den körs som en USB -kringutrustning behöver den bara den ström som tillhandahålls via USB.
Endast JTAG -porten använder konventionell 2,54 mm pinout. Alla andra AVR I/O -portar kräver mer kompakta 1,27 mm -rubriker.
AVR Dragon kan både programmera och felsöka sedan begränsningen på 32 KB togs bort i AVR Studio 4.18 och JTAGICE mkII kan både programmera och felsöka processorn. Processorn kan också programmeras via USB från en Windows- eller Linux -värd med hjälp av USB "Device Firmware Update" -protokoll. Atmel levererar proprietära (källkod inkluderad men distributionsbegränsad) exempelprogram och en USB -protokollbunt med enheten.
LUFA är en tredjeparts fri programvara ( MIT-licens ) USB-protokollstack för USBKey och andra 8-bitars USB AVR.
Raven trådlöst kit
RAVEN -kitet stöder trådlös utveckling med hjälp av Atmels IEEE 802.15.4 -chipset, för ZigBee och andra trådlösa stackar. Det liknar ett par trådlösa mer kraftfulla Butterfly-kort, plus en trådlös USBKey; och kostar ungefär så mycket (under 100 US $). Alla dessa styrelser stöder JTAG-baserad utveckling.
Satsen innehåller två AVR Raven -kort, var och en med en 2,4 GHz sändtagare som stöder IEEE 802.15.4 (och en fritt licensierad ZigBee -stack). Radion drivs med ATmega1284p -processorer, som stöds av en anpassad segmenterad LCD -display som drivs av en ATmega3290p -processor. Korpsutrustning liknar Butterfly: piezohögtalare, DataFlash (större), extern EEPROM, sensorer, 32 kHz kristall för RTC , och så vidare. Dessa är avsedda att användas för att utveckla fjärrsensornoder, för att styra reläer eller vad som helst som behövs.
USB -minnet använder en AT90USB1287 för anslutningar till en USB -värd och till de 2,4 GHz trådlösa länkarna. Dessa är avsedda att övervaka och styra fjärranoderna, beroende på värdström istället för lokala batterier.
Tredjeparts programmerare
En mängd olika programmerings- och felsökningsverktyg från tredje part är tillgängliga för AVR. Dessa enheter använder olika gränssnitt, inklusive RS-232, parallell PC-port och USB.
Användningsområden
AVR har använts i olika fordonsapplikationer såsom säkerhet, säkerhet, drivlina och underhållningssystem. Atmel har nyligen lanserat en ny publikation "Atmel Automotive Compilation" för att hjälpa utvecklare med fordonsapplikationer. Några aktuella användningsområden finns i BMW, Daimler-Chrysler och TRW.
Den Arduino fysiska datorplattform bygger på en ATMEGA328 mikro (ATmega168 eller ATmega8 i kartong versioner äldre än Diecimila). ATmega1280 och ATmega2560, med fler pinout- och minnesfunktioner, har också använts för att utveckla Arduino Mega -plattformen. Arduino -kort kan användas med dess språk och IDE , eller med mer konventionella programmeringsmiljöer ( C , assembler , etc.) som bara standardiserade och allmänt tillgängliga AVR -plattformar.
USB-baserade AVR har använts i Microsoft Xbox handkontroller. Länken mellan kontrollerna och Xbox är USB.
Många företag producerar AVR-baserade mikrokontrollerkort som är avsedda att användas av amatörer, robotbyggare, experimenter och små systemutvecklare, inklusive: Cubloc, gnusb, BasicX , Oak Micros, ZX Microcontrollers och myAVR. Det finns också en stor grupp av Arduino-kompatibla kort som stöder liknande användare.
Schneider Electric tillverkade tidigare M3000 motor- och rörelsekontrollchip, med en Atmel AVR -kärna och en avancerad rörelsekontroller för användning i en mängd olika rörelseapplikationer, men detta har avbrutits.
FPGA kloner
Med den ökande populariteten för FPGA bland öppen källkod har människor börjat utveckla processorer med öppen källkod som är kompatibla med AVR -instruktionsuppsättningen. De OpenCores webbplats listar följande större AVR klon projekt:
- pAVR, skrivet i VHDL , syftar till att skapa den snabbaste och maximalt utrustade AVR -processorn genom att implementera tekniker som inte finns i den ursprungliga AVR -processorn, till exempel djupare pipelining.
- avr_core, skrivet i VHDL , är en klon som syftar till att vara så nära ATmega103 som möjligt.
- Navré, skrivet i Verilog , implementerar alla Classic Core -instruktioner och syftar till hög prestanda och låg resursanvändning. Det stöder inte avbrott.
- softavrcore, skrivet i Verilog , implementerar AVR -instruktionen som är inställd på AVR5, stöder avbrott och vissa gränssnitt (t.ex. UART , SPI och timers) som visar hur externa kringutrustning ansluts till och konfigureras för denna kärna.
- Opencores -projektets CPU -föreläsning skriven i VHDL av Dr Jürgen Sauermann förklarar i detalj hur man utformar ett komplett AVR -baserat system på ett chip (SoC).
Andra leverantörer
Förutom chipsen som tillverkas av Atmel finns kloner tillgängliga från LogicGreen Technologies. Dessa delar är inte exakta kloner - de har några funktioner som inte finns i de marker de är "kloner" av och högre maximala klockhastigheter, men använd SWD istället för ISP för programmering, så olika programmeringsverktyg måste användas.
Mikrokontroller som använder ATmega -arkitekturen tillverkas av NIIET i Voronezh , Ryssland, som en del av integrerade kretsar från 1887. Detta inkluderar en ATmega128 under beteckningen 1887VE7T ( ryska : 1887ВЕ7Т ).
Referenser
Vidare läsning
- AVR -programmering: Att lära sig skriva programvara för hårdvara ; Elliot Williams; Maker Media; 474 sidor; 2014; ISBN 978-1449355784
- Arduino: En snabbstartguide ; Maik Schmidt; Pragmatisk bokhylla; 276 sidor; 2011; ISBN 978-1-934356-66-1 .
- En del montering krävs: Monteringsspråkprogrammering med AVR -mikrokontrollern ; Timothy S Margush; CRC Press; 643 sidor; 2011; ISBN 978-1439820643
- AVR -mikrokontroller och inbyggda system: Användning av montering och C ; Muhammad Ali Mazidi, Sarmad Naimi, Sepehr Naimi; Pearson; 792 sidor; 2010; ISBN 978-0138003319 .
externa länkar
- Officiell hemsida
- Officiell gemenskap
- Pinout -diagram
- AVR DIP-paket: ATtiny44/45/84/85 , ATmega328P , ATmega644P , ATmega1284P
- AVR SMD-paket: ATmega328 , ATmega2560 , ATmega32U4