AVR
Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de
versiunea revizuită la 25 decembrie 2015; verificarea necesită
41 de modificări .
AVR este o familie de microcontrolere pe opt biți , fabricate anterior de Atmel , apoi de Microchip . An de dezvoltare - 1996 .
Istoria arhitecturii AVR
Ideea dezvoltării unui nou RISC - nucleu aparține a doi studenți ai Universității Norvegiene de Știință și Tehnologie (NTNU) din orașul norvegian Trondheim - Alf-Egil Bogen și Vegard Wollen. În 1995, Bogen și Wollen au decis să propună corporației americane Atmel , care era cunoscută pentru cipurile sale de memorie Flash , să lanseze un nou microcontroler RISC pe 8 biți și să-i ofere memorie Flash pentru programe pe un singur cip cu un nucleu de calcul.
Ideea a fost aprobată de Atmel Corp., și s-a decis să se investească imediat în această dezvoltare. La sfârșitul anului 1996, a fost lansat un microcontroler experimental AT90S1200, iar în a doua jumătate a anului 1997, Atmel Corporation a început producția în masă a unei noi familii de microcontrolere, publicitatea și suportul tehnic.
Noul nucleu a fost brevetat și numit AVR . Există mai multe interpretări ale acestei abrevieri. Cineva susține că acesta este A dvanced Virtual R ISC, alții cred că A lf Egil Bogen V egard Wollan R ISC
nu ar fi putut fi aici.
Descrierea arhitecturii
Microcontrolerele AVR au o arhitectură Harvard (programul și datele sunt în spații de adrese diferite) și un sistem de comandă apropiat de ideologia RISC . Procesorul AVR are 32 de registre de uz general pe 8 biți combinate într-un fișier de registru. Spre deosebire de RISC „ideal”, registrele nu sunt absolut ortogonale:
- Unele comenzi funcționează numai cu registrele r16...r31. Acestea includ instrucțiuni de operand imediat: ANDI/CBR, ORI/SBR, CPI, LDI, LDS (16 biți), STS (16 biți), SUBI, SBCI și SER și MULS;
- Instrucțiunile care cresc și decrementează o valoare de 16 biți (pe modelele unde sunt disponibile) cu un operand imediat (ADIW, SBIW) operează doar pe una dintre perechile r25:r24, r27:r26 (X), r29:r28 (Y). ) sau r31:r30(Z);
- Comanda de copiere a unei perechi de registre (în acele modele unde este disponibilă) funcționează doar cu registrele vecine care încep cu impar (r1:r0, r3:r2, ..., r31:r30);
- Rezultatul înmulțirii (în acele modele care au un modul de înmulțire) este întotdeauna plasat în r1:r0. De asemenea, doar această pereche este utilizată ca operanzi pentru instrucțiunea de autoprogramare (acolo unde este disponibilă);
- Unele variante ale instrucțiunilor de înmulțire iau drept argumente numai registre din intervalul r16 ... r23 (FMUL, FMULS, FMULSU, MULSU).
Sistem de comandă
Sistemul de comandă al microcontrolerelor AVR este foarte dezvoltat și include de la 90 la 135 [1] instrucțiuni diferite în diferite modele.
Majoritatea instrucțiunilor ocupă doar 1 locație de memorie (16 biți).
Majoritatea comenzilor sunt executate într-un singur ciclu .
Întregul set de comenzi pentru microcontrolerul AVR poate fi împărțit în mai multe grupuri:
- comenzi de operații logice;
- instrucțiuni aritmetice și instrucțiuni de schimbare;
- instrucțiuni de operare a biților;
- comenzi de transfer de date;
- comenzi de transfer de control;
- comenzi de management al sistemului.
Dispozitivele periferice sunt controlate prin intermediul spațiului de adrese de date. Pentru comoditate, există „comenzi abreviate” IN / OUT.
Familii de microcontrolere
Familii standard:
- tinyAVR(ATtinyxxx ) :
- megaAVR ( ATmega xxx):
- Memorie flash de până la 256 KB; SRAM până la 16 KB; EEPROM până la 4 KB;
- Număr de linii de intrare-ieșire 23-86 (număr total de ieșiri 28-100);
- Multiplicator hardware;
- Sistem extins de comenzi și periferice.
- XMEGA AVR ( ATxmega xxx):
- Memorie flash de până la 384 KB; SRAM până la 32 KB; EEPROM până la 4 KB;
- Controler DMA cu patru canale ;
- Sistem inovator de procesare a evenimentelor.
De regulă, numerele de după prefix indică cantitatea de memorie flash încorporată (în KB) și modificarea controlerului. Și anume, puterea maximă a doi după prefix indică cantitatea de memorie, iar numerele rămase determină modificarea (de exemplu, ATmega128 - 128 KB memorie; ATmega168 - 16 KB memorie, modificarea 8; ATtiny44 și ATtiny45 - 4 KB memorie, modificările 4 și, respectiv, 5).
Pe baza familiilor standard, sunt produse microcontrolere, adaptate pentru sarcini specifice:
În plus față de familiile de mai sus, ATMEL produce microcontrolere pe 32 de biți din familia AVR32 , care include subfamiliile AT32UC3 (frecvență de ceas până la 66 MHz) și AT32AP7000 (frecvență de ceas până la 150 MHz).
Versiuni controler
AT (mega/tiny)xxx este versiunea de bază.
ATxxx L - versiuni de controlere care funcționează la o tensiune de alimentare redusă (scăzută) (2,7 V).
ATxxx V - versiuni de controlere care funcționează la tensiune de alimentare scăzută (1,8 V).
ATxxx P - versiuni cu putere redusă (până la 100 nA în modul Power-down), se utilizează tehnologia picoPower (anunțată în iulie 2007), pin-out și compatibil funcțional cu versiunile anterioare.
ATxxx A - se reduce consumul de curent, se acoperă întreaga gamă de frecvențe de ceas și tensiuni de alimentare ale celor două versiuni anterioare (de asemenea, la unele modele se adaugă noi caracteristici și registre noi, dar se păstrează compatibilitatea deplină cu versiunile anterioare). Microcontrolerele „A” și „non-A” au de obicei aceeași semnătură, ceea ce provoacă unele dificultăți, deoarece biții Fuse sunt diferiți.
Numărul modelului este urmat de un index care indică versiunea. Numerele (8, 10, 16, 20) dinaintea indexului indică frecvența maximă la care microcontrolerul poate funcționa stabil la tensiunea de alimentare normală).
Prima literă a indexului indică varianta carenei:
ATxxx- P - pachet DIP
ATxxx- A - pachet TQFP
ATxxx - J - pachet PLCC
ATxxx- M - pachet MLF
ATxxx- MA - pachet UDFN/USON
ATxxx- C -
pachet CBGA ATxxx- CK - pachet LGA
ATxxx- S - pachet EIAJ SOIC
ATxxx- SS - JEDEC SOIC pachet îngust
ATxxx- T - pachet TSOP
ATxxx- TS - pachet SOT-23 (ATtiny4/5/9/10)
ATxxx- X - pachet TSSOP
Următoarea literă înseamnă intervalul de temperatură și caracteristicile de fabricație:
ATxxx-x C - interval de temperatură comercial (0 °C - 70 °C)
ATxxx-x A - interval de temperatură -20 °C - +85 °C, folosind lipire fără plumb
ATxxx-x I - interval de temperatură industrial (-40 °C C - +85 °C)
ATxxx-x U - Interval de temperatură industrial (-40 °C - +85 °C), folosind lipire fără plumb
ATxxx-x H - Interval de temperatură industrial (-40 °C - +85 °C), folosind NiPdAu
ATxxx-x N - interval de temperatură extins (-40 °C - +105 °C), folosind lipire fără plumb
ATxxx-x F - interval de temperatură extins (-40 °C - +125 °C)
ATxxx-x Z - interval de temperatură auto (-40 °C - +125 °C)
ATxxx-x D - interval extins de temperatură auto (-40 °C - +150 °C)
ultima literă R reprezintă ambalajul Tape & Reel pentru sisteme de asamblare automate.
Dispozitive I/O MK
MK AVR au o periferie dezvoltată:
- Până la 86 de linii I/O GPIO bidirecționale multifuncționale combinate în porturi I/O pe 8 biți . În funcție de configurația definită de software, registrele pot funcționa independent unul de celălalt în modul driver „puternic”, emitând sau primind (la masă) curent de până la 40 mA , care este suficient pentru a conecta indicatoarele LED. Oricare dintre pinii portului poate fi configurat să „intrare” fie într-o stare liberă, fie folosind rezistența de pull-up (pozitivă) încorporată.
- Până la 3 surse de întrerupere externe (prin margine, cutoff sau nivel) și până la 32 prin modificarea nivelului la intrare.
- Ca sursă de impulsuri de ceas, puteți selecta:
- rezonator ceramic sau cuarț (nu toate modelele);
- semnal de ceas extern;
- oscilator RC intern calibrat (frecvența 1, 2, 4, 8 MHz și, de asemenea, pentru unele modele ATtiny, 4,8, 6,4, 9,6 MHz și 128 kHz).
- Memorie internă de instrucțiuni flash de până la 256 KB (cel puțin 10.000 de cicluri de scriere).
- Depanarea programului se realizează folosind interfețele JTAG sau debugWIRE :
- Semnalele JTAG (TMS, TDI, TDO și TCK) sunt multiplexate pe fiecare port I/O. Modul de funcționare - JTAG sau port - este setat de bitul corespunzător din registrul siguranțelor. MCU-urile AVR vin cu JTAG activat.
- Memoria internă de date EEPROM de până la 4 KB (ATmega/ATxmega)/512 octeți (ATtiny) (până la 100.000 de cicluri de scriere).
- SRAM intern de până la 32 KB (ATxmega)/16 KB (ATmega)/1 KB (ATtiny) cu timp de acces în 2 cicluri.
- Memorie externă de până la 64 KB (ATmega8515, ATmega162, ATmega640, ATmega641, ATmega1280, ATmega1281, ATmega2560, ATmega256).
- Temporizatoare cu 8, 16 biți.
- Modulator PWM (PWM) 8-, 9-, 10-, 16-bit.
- comparatoare analogice.
- ADC (ADC) cu intrări diferențiale, 8 (ATtiny)/10 (ATtiny/ATmega)/12 (ATxmega) biți:
- câștig programabil înainte de ADC 1, 10 și 200 (în modul diferențial);
- tensiunea de referință poate fi: tensiune de alimentare, tensiune externă sau tensiune de referință internă necalibrată de aproximativ 2,56 V (pentru modelele cu o tensiune de alimentare minimă de 2,7 V și mai mare) sau 1,1 V (cu o tensiune de alimentare minimă de 1, 8 V ).
- Diverse interfețe seriale, inclusiv:
- Seria USB AT90USBxxxx.
- Seria CAN AT90CANxxx.
- Seria LCD ATmega169 și ATmega329 .
- Senzori de temperatura ATtiny25 , ATtiny45 , ATtiny85 .
- Aproape toate (cu excepția unor modele ATtiny timpurii, care au o interfață specială pentru reprogramare) acceptă programarea în circuit (ISP) prin interfața serială SPI . Multe microcontrolere acceptă programare alternativă în serie sau paralelă folosind tensiune înaltă, în cazul în care registrele siguranțelor au fost configurate astfel încât programarea convențională nu este disponibilă.
- Suport pentru autoprogramare, în care programul principal poate schimba o parte din codul său.
- Suport pentru pornirea programului principal folosind o subrutină protejată la scriere (bootloader). Codul programului principal este primit de obicei printr-unul dintre porturile microcontrolerului folosind unul dintre protocoalele standard.
- O serie de moduri de consum redus de energie.
Notă: Nu toate perifericele pot fi activate de software. Unele dintre ele trebuie mai întâi activate prin biți din registrele Fuses, care pot fi modificate doar de programator.
Instrumente de dezvoltare
Hardware de dezvoltare
Instrumente oficiale de dezvoltare AVR Atmel:
- Kit de pornire STK600
- Kit de pornire STK500
- Kit de pornire STK200
- AVRISP și AVRISP mkII
- AVR Dragon
- USBasp-USB
- JTAGICE mkI
- JTAGICE mkII
- JTAGICE3
- ATMEL-ICE
- AVR ONE!
- Panou demonstrativ fluture
- AT90USBKey
- Kit fără fir Raven
Există, de asemenea, multe instrumente de la terți, în special cele pentru amatori.
Software de dezvoltare
Gratuit
- Algorithm Builder este un mediu de dezvoltare software algoritmică pentru microcontrolere cu arhitectură AVR (ultima actualizare în 2010).
- AVR-Eclipse este un plug-in pentru mediul de dezvoltare Eclipse care vă permite să dezvoltați programe în C/C++ și controlere de asamblare, program și depanare folosind un lanț de instrumente extern (Atmel AVR Toolchain, WinAVR)
- avra este un asamblator de macroconsolă pentru Linux/MacOS.
- Avrdude este un instrument pentru intermiterea microcontrolerelor.
- AVRDUDE_PROG 3.1 - editor vizual.
- Code::Blocks este un mediu de dezvoltare multiplatformă.
- DDD este o interfață grafică pentru avr-gdb.
- eXtreme Burner - AVR este o interfață grafică pentru programatorii USB AVR bazați pe USBasp.
- Khazama AVR Programmer este o interfață grafică Windows pentru USBasp și avrdude.
- PonyProg este un programator universal prin portul LPT, portul COM (este acceptat și emulatorul USB al portului COM).
- V-USB este o implementare software a protocolului USB pentru microcontrolere AVR.
- WinAVR este un pachet software pentru Windows care include un compilator, un asamblator, un linker și alte instrumente.
- Zadig 2.3
Proprietar
- Atmel Studio este un IDE gratuit de la Atmel însuși
- IAR AVR - mediu de dezvoltare comercială pentru microcontrolere AVR
- Bascom-avr este un mediu de dezvoltare bazat pe un limbaj de programare de tip Basic .
- CodeVisionAVR - compilator și programator C - CVAVR, generator inițial de cod.
- Proteus este un simulator de circuite electrice, componente, inclusiv diverse MK și alte echipamente periferice.
Arhitectura AVR permite, de asemenea, utilizarea sistemelor de operare în dezvoltarea aplicațiilor, de exemplu, FreeRTOS , uOS , ChibiOS / RT , scmRTOS ( C ++ ), TinyOS , Femto OS și altele, precum și Linux pe AVR32 . [2]
Vezi și
Link -uri
Note
- ↑ Copie arhivată . Preluat la 28 ianuarie 2021. Arhivat din original la 6 mai 2021. (nedefinit)
- ↑ AVR32737: AVR32 AP7 Linux Noțiuni introductive (februarie 2008). Consultat la 24 aprilie 2017. Arhivat din original pe 29 martie 2017. (nedefinit)
Microcontrolere |
---|
Arhitectură | 8 biți |
|
---|
pe 16 biți |
|
---|
pe 32 de biți |
|
---|
| |
---|
Producătorii |
|
---|
Componente |
|
---|
Periferie |
|
---|
Interfețe |
|
---|
OS |
|
---|
Programare |
|
---|