AVR
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 25. prosince 2015; ověření vyžaduje
41 úprav .
AVR je rodina osmibitových mikrokontrolérů , dříve vyráběných společností Atmel , poté společností Microchip . Rok vývoje - 1996 .
Historie architektury AVR
Myšlenka vývoje nového jádra RISC patří dvěma studentům Norské univerzity vědy a technologie (NTNU) z norského města Trondheim - Alf-Egilu Bogenovi a Vegardu Wollenovi. V roce 1995 se Bogen a Wollen rozhodli navrhnout americké korporaci Atmel , která byla známá svými paměťovými čipy Flash , aby vydala nový 8bitový mikrokontrolér RISC a poskytla mu paměť Flash pro programy na jediném čipu s výpočetním jádrem.
Nápad byl schválen společností Atmel Corp. a bylo rozhodnuto okamžitě investovat do tohoto vývoje. Koncem roku 1996 byl uveden na trh experimentální mikrokontrolér AT90S1200 a v druhé polovině roku 1997 zahájila společnost Atmel Corporation hromadnou výrobu nové rodiny mikrokontrolérů, jejich reklamu a technickou podporu.
Nové jádro bylo patentováno a pojmenováno AVR . Existuje několik výkladů této zkratky. Někdo tvrdí, že se jedná o Advanced Virtual R ISC, jiní věří, že Alf Egil Bogen V egard Wollan R ISC
tu být nemohl .
Popis architektury
Mikrokontroléry AVR mají architekturu Harvard (program a data jsou v různých adresových prostorech) a příkazový systém blízký ideologii RISC . Procesor AVR má 32 8bitových obecných registrů sdružených do souboru registrů. Na rozdíl od „ideálního“ RISC nejsou registry absolutně ortogonální:
- Některé příkazy fungují pouze s registry r16…r31. Patří mezi ně instrukce okamžitého operandu: ANDI/CBR, ORI/SBR, CPI, LDI, LDS (16-bit), STS (16-bit), SUBI, SBCI a SER a MULS;
- Instrukce, které zvyšují a snižují 16bitovou hodnotu (u modelů, kde jsou k dispozici) s okamžitým operandem (ADIW, SBIW), fungují pouze na jednom z párů r25:r24, r27:r26 (X), r29:r28 (Y ) nebo r31:r30(Z);
- Příkaz pro kopírování dvojice registrů (v těch modelech, kde jsou k dispozici) funguje pouze se sousedními registry začínajícími lichým (r1:r0, r3:r2, ..., r31:r30);
- Výsledek násobení (v těch modelech, které mají modul násobení) je vždy umístěn v r1:r0. Pouze tento pár se také používá jako operandy pro instrukci samoprogramování (je-li k dispozici);
- Některé varianty instrukcí násobení berou jako argumenty pouze registry z rozsahu r16 ... r23 (FMUL, FMULS, FMULSU, MULSU).
Příkazový systém
Příkazový systém mikrokontrolérů AVR je vysoce vyvinutý a obsahuje 90 až 135 [1] různých instrukcí v různých modelech.
Většina instrukcí zabírá pouze 1 paměťové místo (16 bitů).
Většina příkazů se provádí v 1 cyklu .
Celou sadu příkazů mikrokontroléru AVR lze rozdělit do několika skupin:
- příkazy logických operací;
- aritmetické instrukce a instrukce řazení;
- instrukce bitové operace;
- příkazy pro přenos dat;
- řídící přenosové příkazy;
- příkazy pro správu systému.
Periferní zařízení jsou ovládána přes datový adresní prostor. Pro pohodlí jsou zde "zkrácené příkazy" IN / OUT.
Rodiny mikrokontrolérů
Standardní rodiny:
- tinyAVR(ATtinyxxx ) :
- megaAVR ( ATmega xxx):
- Flash paměť až 256 KB; SRAM až 16 KB; EEPROM až 4 KB;
- Počet vstupně-výstupních linek 23-86 (celkový počet výstupů 28-100);
- Hardwarový multiplikátor;
- Rozšířený systém příkazů a periferií.
- XMEGA AVR ( ATxmega xxx):
- Flash paměť až 384 KB; SRAM až 32 KB; EEPROM až 4 KB;
- Čtyřkanálový ovladač DMA ;
- Inovativní systém zpracování událostí.
Čísla za prefixem zpravidla označují velikost vestavěné flash paměti (v KB) a úpravu ovladače. Konkrétně, maximální mocnina dvou za prefixem udává velikost paměti a zbývající čísla určují modifikaci (například ATmega128 - 128 KB paměť; ATmega168 - 16 KB paměť, modifikace 8; ATtiny44 a ATtiny45 - 4 KB paměť, modifikace 4 a 5).
Na základě standardních rodin jsou vyráběny mikrokontroléry přizpůsobené pro konkrétní úlohy:
Kromě výše uvedených rodin vyrábí ATMEL 32bitové mikrokontroléry rodiny AVR32 , která zahrnuje podrodiny AT32UC3 (taktovací frekvence až 66 MHz) a AT32AP7000 (hodinová frekvence až 150 MHz).
Verze ovladačů
AT (mega/tiny)xxx je základní verze.
ATxxx L - verze regulátorů pracující se sníženým (Nízkým) napájecím napětím (2,7 V).
ATxxx V - verze regulátorů pracující na nízké napájecí napětí (1,8 V).
ATxxx P - verze s nízkou spotřebou (až 100 nA v režimu Power-down), je použita technologie picoPower (oznámena v červenci 2007), pin-out a funkčně kompatibilní s předchozími verzemi.
ATxxx A - snížena spotřeba proudu, pokryt celý rozsah hodinových frekvencí a napájecích napětí dvou předchozích verzí (u některých modelů jsou také přidány nové funkce a nové registry, ale zachována plná kompatibilita s předchozími verzemi). Mikrokontroléry "A" a "non-A" mají obvykle stejný podpis, což způsobuje určité potíže, protože pojistkové bity jsou různé.
Za číslem modelu následuje index označující verzi. Čísla (8, 10, 16, 20) před indexem udávají maximální frekvenci , při které může mikrokontrolér stabilně pracovat při svém normálním napájecím napětí).
První písmeno indexu označuje variantu trupu:
ATxxx- P - DIP balíček
ATxxx- A - TQFP
balíček ATxxx - J - PLCC balíček
ATxxx- M - MLF
balíček ATxxx- MA - UDFN/USON balíček
ATxxx- C - CBGA
balíček ATxxx- CK - LGA balíček
ATxxx- S - EIAJ balíček SOIC
ATxxx- SS - JEDEC SOIC úzký balíček
ATxxx- T - balíček TSOP
ATxxx- TS - balíček SOT-23 (ATtiny4/5/9/10)
ATxxx- X - balíček TSSOP
Následující písmeno znamená teplotní rozsah a výrobní vlastnosti:
ATxxx-x C - komerční teplotní rozsah (0 °C - 70 °C)
ATxxx-x A - teplotní rozsah -20 °C - +85 °C, s použitím bezolovnaté pájky
ATxxx-x I - průmyslový teplotní rozsah (-40 °C C - +85 °C)
ATxxx-x U - Průmyslový teplotní rozsah (-40 °C - +85 °C), s použitím bezolovnaté pájky
ATxxx-x H - Průmyslový teplotní rozsah (-40 °C - +85 °C), s použitím NiPdAu
ATxxx-x N - rozšířený teplotní rozsah (-40 °C - +105 °C), s použitím bezolovnaté pájky
ATxxx-x F - rozšířený teplotní rozsah (-40 °C - +125 °C)
ATxxx-x Z - automobilový teplotní rozsah (-40 °C - +125 °C)
ATxxx-x D - rozšířený automobilový teplotní rozsah (-40 °C - +150 °C)
poslední písmeno R znamená obaly Tape & Reel pro automatizované montážní systémy.
I/O zařízení MK
MK AVR mají rozvinutou periferii:
- Až 86 multifunkčních obousměrných I/O linek GPIO kombinovaných do 8bitových I/O portů . V závislosti na softwarově definované konfiguraci mohou registry pracovat nezávisle na sobě v režimu „silného“ ovladače, vydávající nebo přijímací (k zemi) proud až 40 mA , což stačí pro připojení LED indikátorů. Kterýkoli z pinů portu může být nakonfigurován na "vstup" buď ve volném stavu, nebo pomocí vestavěného pull-up (kladného) odporu.
- Až 3 externí zdroje přerušení (hranou, cutoff nebo úrovní) a až 32 změnou úrovně na vstupu.
- Jako zdroj hodinových impulsů můžete vybrat:
- keramický nebo křemenný rezonátor (ne všechny modely);
- externí hodinový signál;
- kalibrovaný interní RC oscilátor (frekvence 1, 2, 4, 8 MHz a u některých modelů ATtiny také 4,8, 6,4, 9,6 MHz a 128 kHz).
- Interní paměť flash instrukcí až 256 KB (alespoň 10 000 cyklů zápisu).
- Ladění programu se provádí pomocí rozhraní JTAG nebo debugWIRE :
- Signály JTAG (TMS, TDI, TDO a TCK) jsou multiplexovány na I/O port. Režim činnosti - JTAG nebo port - se nastavuje odpovídajícím bitem v registru pojistek. AVR MCU se dodávají s povoleným JTAG.
- Interní datová paměť EEPROM až 4 KB (ATmega/ATxmega)/512 bajtů (ATtiny) (až 100 000 cyklů zápisu).
- Interní SRAM až 32 KB (ATxmega)/16 KB (ATmega)/1 KB (ATtiny) s 2-cyklovou přístupovou dobou.
- Externí paměť až 64 KB (ATmega8515, ATmega162, ATmega640, ATmega641, ATmega1280, ATmega1281, ATmega2560, ATmega256).
- Časovače s 8, 16 bity.
- PWM modulátor (PWM) 8-, 9-, 10-, 16-bit.
- analogové komparátory.
- ADC (ADC) s diferenciálními vstupy, 8 (ATtiny)/10 (ATtiny/ATmega)/12 (ATxmega) bitů:
- programovatelné zesílení před ADC 1, 10 a 200 (v diferenciálním režimu);
- referenční napětí může být: napájecí napětí, externí napětí nebo interní nekalibrované referenční napětí asi 2,56 V (u modelů s minimálním napájecím napětím 2,7 V a vyšším) nebo 1,1 V (s minimálním napájecím napětím 1,8 V ).
- Různá sériová rozhraní včetně:
- USB řady AT90USBxxxx.
- CAN série AT90CANxxx.
- LCD řady ATmega169 a ATmega329 .
- Teplotní senzory ATtiny25 , ATtiny45 , ATtiny85 .
- Téměř všechny (s výjimkou některých raných modelů ATtiny, které mají speciální rozhraní pro přeprogramování) podporují in-circuit programming (ISP) přes sériové rozhraní SPI . Mnoho mikrokontrolérů podporuje alternativní sériové nebo paralelní programování pomocí vysokého napětí v případě, že pojistkové registry byly nakonfigurovány tak, že konvenční programování není dostupné.
- Podpora samoprogramování, ve kterém může hlavní program měnit část svého kódu.
- Podpora spouštění hlavního programu pomocí podprogramu chráněného proti zápisu (bootloaderu). Hlavní programový kód je obvykle přijímán přes jeden z portů mikrokontroléru pomocí jednoho ze standardních protokolů.
- Řada režimů se sníženou spotřebou energie.
Poznámka: Ne všechna periferní zařízení lze aktivovat pomocí softwaru. Některé z nich je nutné nejprve aktivovat bity v registrech Fuses, které může změnit pouze programátor.
Vývojové nástroje
Vývojový hardware
Oficiální vývojové nástroje Atmel AVR:
- Startovací sada STK600
- Startovací sada STK500
- Startovací sada STK200
- AVRISP a AVRISP mkII
- AVR Dragon
- USBasp-USB
- JTAGICE mkI
- JTAGICE mkII
- JTAGICE3
- ATMEL-ICE
- AVR ONE!
- Demonstrační deska motýla
- AT90USB klíč
- Bezdrátová sada Raven
Existuje také mnoho nástrojů třetích stran, zejména amatérských.
Vývojový software
Zdarma
- Algorithm Builder je prostředí pro vývoj algoritmického softwaru pro mikrokontroléry s architekturou AVR (poslední aktualizace v roce 2010).
- AVR-Eclipse je plug-in pro vývojové prostředí Eclipse , který vám umožňuje vyvíjet programy v C/C++ a assembleru, programovat a ladit řadiče pomocí externího toolchainu (Atmel AVR Toolchain, WinAVR)
- avra je konzolový makro assembler pro Linux/MacOS.
- Avrdude je nástroj pro flashování mikrokontrolérů.
- AVRDUDE_PROG 3.1 - vizuální editor.
- Code::Blocks je multiplatformní vývojové prostředí.
- DDD je grafické rozhraní k avr-gdb.
- eXtreme Burner - AVR je grafické rozhraní pro programátory USB AVR založené na USBasp.
- Khazama AVR Programmer je grafické uživatelské rozhraní Windows pro USBasp a avrdude.
- PonyProg je univerzální programátor přes LPT-port, COM-port (podporován je i USB-emulátor COM-portu).
- V-USB je softwarová implementace protokolu USB pro mikrokontroléry AVR.
- WinAVR je softwarový balík pro Windows , který obsahuje kompilátor, assembler, linker a další nástroje.
- Zadig 2.3
Proprietární
- Atmel Studio je bezplatné IDE od samotného Atmelu
- IAR AVR - komerční vývojové prostředí pro mikrokontroléry AVR
- Bascom-avr je vývojové prostředí založené na programovacím jazyku typu Basic .
- CodeVisionAVR - C kompilátor a programátor - CVAVR, generátor počátečního kódu.
- Proteus je simulátor elektrických obvodů, součástek včetně různých MK a dalších periferních zařízení.
Architektura AVR také umožňuje použití operačních systémů při vývoji aplikací, například FreeRTOS , uOS , ChibiOS / RT , scmRTOS ( C ++ ), TinyOS , Femto OS a další, stejně jako Linux na AVR32 . [2]
Viz také
Odkazy
Poznámky
- ↑ Archivovaná kopie . Získáno 28. ledna 2021. Archivováno z originálu dne 6. května 2021. (neurčitý)
- ↑ AVR32737: AVR32 AP7 Linux Začínáme (únor 2008). Získáno 24. dubna 2017. Archivováno z originálu 29. března 2017. (neurčitý)
Mikrokontroléry |
---|
Architektura | 8bitový |
|
---|
16bitový |
|
---|
32bitový |
|
---|
| |
---|
Výrobci |
|
---|
Komponenty |
|
---|
Obvod |
|
---|
Rozhraní |
|
---|
OS |
|
---|
Programování |
|
---|