Sunteți pe pagina 1din 35

Arhitecturi de sisteme

incorporate
Microcontrolere si sisteme
integrate

Microchip AVR 8 biți


Familia XMEGA
Familia Tiny AVR 1 (Seria 1), noile variante
Tiny AVR
1
AVR XMEGA
• Prezentarea care urmează este una foarte sumară, care scoate in
evidentă doar principalele caracteristici noi sau îmbunătățite ale familiei
XMEGA fata de ATMega
• Pentru o informație fiabilă, completă si consistenta consultați manualele
utilizator (user manual), foile de catalog complete (complete datasheet)
si notele de aplicație (application note) disponibile pe site-ul Microchip.
• Din păcate la Microchip nu mai exista o pagina de plecare pentru toata
familia AVR XMEGA, trebuind accesate mai mult sau mai puțin direct
paginile dedicate unei anumite variante, gen:
• https://www.microchip.com/wwwproducts/en/ATXMEGA16A4U
• Distribuitori mai mențin eventual niște pagini sintetice pentru AVR
XMEGA, vezi:
• https://www.digikey.com/en/product-highlight/a/atmel/avr-xmega
• De notat că pentru fiecare modul periferic sau de memorie, nou sau
îmbunătățit, există si câte o notă de aplicații, in care sunt explicate
caracteristicile acestuia si modul de utilizare
• Exista zvonuri (si semne.. ) ca familia XMEGA va intra in ce se cheamă
EOL – End Of Life- urmând sa fie scoasa din fabricație si înlocuită total
de variantele modernizate de Tiny si MEGA

2
Indentificarea circuitelor AVR XMEGA
• Variantele propriu-zise de XMEGA sunt identificate cu ajutorul
unei litere: prima varianta disponibilă a fost varianta A (sub-
familia A).
– Literele spun ceva (dar nu foarte clar..) despre periferia disponibila
• Numărul din fața literei este dimensiunea memoriei de
program FLASH in kOcteți,
• După literă urmează un identificator al numărului de pini al
capsulei (1, 2, 3, 4, 5, etc.)
– De ex. 1 – 100 pini, 3- 64 pini, 4- 44 pini, 5-32 de pini
• Actualmente (2021) există (dar nu neaparat mai sunt si in
productie) variantele A, B, C , D si E, cu dimensiunea
maximă a memoriei FLASH de 384kOcteti, a celei SRAM de
32kOcteti, iar a celei EEPROM de 4kOcteti
• Exemple: ATXMEGA128A1, ATXMEGA384D3, etc.
• https://www.digikey.com/en/product-highlight/a/atmel/avr-
xmega
• Oricum este obligatorie consultarea foii de catalog pentru
identificarea/ înțelegerea corectă a resurselor disponibile
pentru un anumit circuit XMEGA!
3
AVR XMEGA: încapsularea si domeniul de
temperatură
• XMEGA este actualmente disponibil in capsule (package) de 32, 44, 64 sau 100 de
pini
• Numărul de porturi si/sau de pini I/O disponibili este proporțional cu numărul de pini ai
capsulei
• Toate aceste capsule sunt de tipul SMD/SMT, cu montare pe suprafață: TQFP, QFN,
BGA
• Nu mai există circuite XMEGA in capsule pin-through gen DIL sau PDIP!
• Domeniul temperaturii de lucru este, pentru majoritatea, doar cel industrial, de -
40oC … +85oC
• Exista o categorie de circuite XMega notate ca AUTOMOTIVE, calificate pentru un
domeniu extins de temperatură de -40oC … +105oC
• Nu există încă versiuni XMEGA calificate pentru un domeniu extins de temperatură
de -40oC … +125oC , cum există pentru ATtiny sau ATMega (AT90PWM)

4
XMEGA versus ATMega
• AVR XMEGA este tot un microcontroler AVR de 8 biți, având practic
aceiași unitate centrală (CPU) si aceiași arhitectură, dar având unele
caracteristici suplimentare, superioare precum si module periferice sau
de memorie reproiectate si/sau îmbunătățite.
• Spațiul de memorie adresabil a crescut până la 16 MOcteți de memorie
de program si 16MOcteți de memorie de date, de unde si apariția unor
noi registre de 8 biți:
– RAMPX, RAMPY, RAMPZ: pentru a se putea adresa întreg spațiul de
adrese al memoriei de program si de date au fost adăugate niște extensii
(registre suplimentare de 8 biți) la registrele X, Y, Z de 16 biți utilizate pentru
adresarea memoriei, ele putând avea acum si 24 de biți (necesari pentru
adresarea a 16 MOcteti, 224=16777216)
– RAMPD: poate fi concatenat cu un operand de 16 biți, rezultant o adresa de
24 de biti pentru adresarea întregii memorii de date
– EIND(Extended INDirect register): poate fi concatenat cu registrul Z
pentru a realiza salturi indirecte sau apeluri de subrutine peste limita de
128KB (64kcuvinte) a memoriei de program
• Actualmente exista circuite care au implementat intre 16 si 384KOcteti
de memorie de program Flash si intre 2 si 32KOcteti de memorie de
date SRAM
• Bancul de 32 de registre de uz general nu mai este mapat direct in
spațiul de memorie SRAM (nu mai are adrese in SRAM), un registru de
uz general ne mai putând fi tratat ca orice alta locație de memorie
SRAM
• XMEGA are același set de instrucțiuni si dezvoltatorul utilizează același
set de mijloace de dezvoltare, IDE-uri, compilatoare, etc. 5
XMEGA vs. ATMega: programarea porturilor ca I/O
de uz general
• Prezentarea porturilor I/O pentru AVR XMEGA este una sumară, pentru detalii si
programare efectivă consultați foile de catalog si notele de aplicații.
– Caracteristicile respective se întâlnesc si la variantele Mega si Tiny modernizate (seriile 0,
1,2)
• Există multe facilități noi legate de programarea si utilizarea pinilor ca I/O de
uz general
• Ele se refera la noi configurații disponibile si corespunzător registre noi cu biți
corespunzători care permit programarea noilor configurații de ieșiri (mai ales)
• Șase din cele 8 configurații disponibile si programabile sunt prezentate mai
jos si explicate in continuare.

6
XMEGA vs. ATMega: programarea porturilor ca
I/O de uz general -2
• Prin totem-pole se înțelege o ieșire CMOS normală; ea poate fi combinata cu
rezistente de pull-up (către Vcc) sau pull-down (către masă) conectate intern
• Cu ajutorul rezistentele de pull-down este posibilă realizarea unui OR cablat (SAU
cablat) intre mai multe ieșiri de tip sursă in gol
• Folosind rezistentele de pull-up este posibilă realizarea unui AND cablat (SI-
cablat) intre mai multe ieșiri de tip drenă in gol
• Pentru intrări este posibilă utilizarea unei configurații bus-keeper , care asigură
memorarea ultimei stări a intrării/ ieșirii, astfel încât intrarea respectivă să nu
rămână flotanta (in Hi-Z)
• Dacă pentru ATMega existau practic 3 registre per port: DDR, PORT si PIN acum
există mult mai multe, iar cele de la ATMega au fost redenumite.
– Avem acum registrele DIR (Data Direction Register), OUT(Data Output Value Register)
si IN (Data Input Value Register), iar configurațiile din slide-ul anterior sunt programate
prin intermediul registrului PINnCTRL (Pin n Control Register)
– Pe lângă acestea mai avem: DIRSET (Data Direction Set Register), DIRCLR (Data Direction
Clear Register), DIRTGL (Data Direction Toggle Register), OUTSET (Data Output Value Set
Register), OUTCLR (Data Output Value Clear Register), OUTTGL (Data Output Value Toggle
Register), REMAP (Pin Remap Register) plus câteva registre asociate sistemului de
întreruperi (practic este posibil ca orice pin sa declanșeze o întrerupere)
– Alt set de registre permite o (re) configurare si mai flexibila a pinilor in contextul multi-
functionalitatii lor: MPCMASK (Multi-Pin Configuration Mask Register), CLKOUT (Clock
Output Register), ACEVOUT(Analog Comparator and Event Output Register), SRLCTRL
(Slew Rate Limit Control Register)
• Există si noul concept de port virtual (virtual port) care permite maparea a pana
la 4 porturi virtuale la orice adresa in zona bit adresabila a memoriei I/O:
– aceasta permite folosirea unor instrucțiuni specifice de manipulare a biților in memorie
(valorificata de compilator);
– de exemplu se poate mapa portul PORTD cu/in portul virtual 3, astfel încât scriind in portul
virtual 3 este același lucru cu a scrie in PORTD

7
XMEGA vs. ATMega: programarea porturilor ca
I/O de uz general -3

11 + 8 = 19 registre per port !

Plus 4 registre virtuale per port 8


XMEGA vs. ATMega, subsisteme noi
• La AVR XMEGA au apărut o serie de circuite periferice
noi sau îmbunătățite din care cele mai importante ar fi:
– un controler multi-canal de acces direct la memorie (DMA) numit
EDMA- Enhanced Direct Memory Access care permite transferul
de date intre periferice si memorie cu o intervenție minimala a
unității centrale
– un controler care tratează evenimentele de la nivelul modulelor
periferice (Event System)
– un sistem complex de conversie analog-numerică de 12 biți
– un sistem de conversie numeric-analogic de 12 biți
– un controler de întreruperi cu mai multe nivele de priorități (are 3
nivele fata de cele 2 de la Mega),
– un motor de criptare AES/DES (accelerator criptografic hardware)
– un modul de calcul al sumelor de control CRC16 sau CRC32
• De notat ca la fel ca multe din modulele periferice, si
controlerul DMA si precum cel numit Event System pot
funcționa, cu unitatea centrală trecută intr-un mod cu
consum redus - “adormită” (sleep), la tensiunea minimă
de alimentare de 1.6V, putând duce la o reducere drastică
a consumului
9
XMEGA vs. ATMega
• Ca o recapitulare a modulelor/sub-sistemelor, un AVR XMEGA poate
avea (eventual …pană la.. dacă e vorba de mai multe module), funcție de
variantă:
– 8 module USART
– 4 module TWI (I2C), cu frecvențe maxime de 100kHz, 400kHz si 1MHz (doar
la unele variante)
– 4 module SPI, cu frecventa maximă pană la 16MHz (viteza 16Mbps)
– 8 module temporizatoare/numărătoare cu 32 de ieșiri cu modulare in durată
(PWM)
• Apare un nou mod de lucru si modul utilizat pentru generarea formelor de unda numit AWeX –
Advanced Waveform Extension si
• Apare un mod de lucru si un modul numit Hi-Res- High-Resolution Extension, de înaltă rezoluție,
tot pentru generarea formelor de unda
– 1 modul USB (care asigură conectivitatea USB)
– 1 modul de interfața directa cu un panou de afișare LCD (4x40 segmente)
– 2 module convertoare analog-numerice de 12 biți
– 1 modul convertor numeric-analogic de 12 biți
– 1 modul ceas de timp real de 16 biți (RTC- Real Time Clock) si unul de 32 de
biți (RTC32)
– 1 modul XCL (XMEGA Custom Logic) care conține 2
numărătoare/temporizatoare de 8 biți si două tabele de adevăr (LUT - Look Up
Table) programabile, care pot fi folosite la implementare unui logici
combinaționale si/sau secvențiale (înlocuind bistabile, porți, etc.), cu scopul
măririi flexibilității si al reducerii numărului de componente necesare (in afara
microcontrolerului)
– Un modul IRCOM (Infra Red Communication), modul de comunicații seriale in10
infraroșu (conform standardului IrDA)
XMEGA vs. ATMega
• Microcontrolerele din cele două familii MEGA AVR, XMEGA si
ATMEGA, nu sunt pin la pin compatibile.
• Aceasta este datorită dorinței de a face noua familie mai modulară,
replicând funcții si module periferice pe fiecare port I/O.
– De exemplu UART-ul, interfața SPI si cea TWI sunt localizate întotdeauna
pe aceiași pini ai unui port I/O care are aceste caracteristici.
– La fel se întâmplă si pentru interfața analogică
• Aceasta face ușoară portarea de cod intre microcontrolerele XMEGA,
care devine practic trivială, dar a dus la incompatibilitatea pin la pin cu
ATMEGA.
• XMEGA funcționează la tensiuni de alimentare Vcc intre 1.6V si
3.6 V.
• Interfața electrică este una compatibilă LVTTL, dar capacitatea unui
pin, utilizat ca ieșire, de a debita (source) sau absorbi (sink) curent
este asimetrică ( |IOH|< IOL ), valoarea maximă fiind proporțională cu
tensiunea de alimentare
– De exemplu, pentru o varianta XMEGA A4, la Vcc= 3.3V avem IOL=15mA
si IOH=-8mA, iar pentru o varianta D4, la Vcc= 3.3V avem IOL=8mA si
IOH=-4mA
11
XMEGA vs. ATMega
• Fata de ATMega unitatea centrală poate funcționa la frecvențe de
ceas mai mari, la tensiuni de alimentare mai mici.
• In cazul XMEGA tensiunea mai mică de alimentare nu înseamnă
neapărat si viteză mai mică a CPU
– Toate circuitele XMEGA pot funcționa la o frecvență maximă de ceas de
32MHz, la tensiune de alimentare Vcc= 2.7V; dar chiar si la tensiunea
minima de alimentare Vcc= 1.6V frecvența maximă de ceas utilizabilă este
totuși consistentă, de 12MHz.
• XMEGA este descris ca fiind a doua generație a tehnologiei Atmel de
putere foarte scăzută numită picoPOWER
• Procesul tehnologic CMOS utilizat pentru realizarea familiei XMEGA a
fost unul optimizat pentru scăderea consumului propriu, dar limita
superioară a tensiunii de alimentare este acum de 3.6V, actualii
membrii a familiei XMEGA neputând să funcționeze la tensiunea
de alimentare de 5V.
– Pinii AVR XMEGA NU sunt “5V I/O tolerant”!
• Dacă ne trebuie o interfață (de intrare) cu circuite alimentate la 5V,
obligatoriu trebuie utilizată o translație de nivele logice de la 5V la
3.3V si invers!

12
Utilizarea structurilor (limbaj C) si migrația
aplicațiilor intre variante XMEGA diferite
• Arhitectura XMEGA a fost concepută astfel încât să se ușureze si portarea
aplicațiilor intre diversele variante de microcontrolere XMEGA.
– De exemplu, la toate XMEGA, porturile PORTA si PORTB sunt dedicate si
funcțiilor alternative analogice (convertoare analog numerice -ADC, convertoare
numeric analogice - DAC, comparatoare analogice -AC)
• Toate modulele periferice sunt definite, din punct de vedere al utilizatorului,
cu ajutorul unor structuri in limbajul C (typedef struct).
• Aceasta înseamnă, de exemplu, că registrele convertorului analog numeric
(ADC) pot fi accesate prin intermediul structurii dedicate.
• Convertorul analog-numeric, fiind din punct de vedere software practic
definit de aceasta structură, ideea a fost ca această structură să fie una
identică, de exemplu, pentru toate variantele A.
• Dacă am început dezvoltarea aplicației folosind un ATXmega64A4, putem
migra ușor la un ATxmega128A4 sau ATxmega256A4, dacă avem nevoie
de mai multă memorie de program, utilizând exact același cod pentru
convertor.
• Vezi si nota de aplicatii AVR1000: Getting Started Writing C-code for
XMEGA, http://ww1.microchip.com/downloads/en/AppNotes/doc8075.pdf
• De ce nu s-a procedat la fel si pentru ATMEGA?
– Acolo nu a fost posibil să se utilizeze o structură unică pentru un anumit modul
pentru că modulele periferice nu aveau aceiași arhitectură, pentru diversele
variante.
– Pentru XMEGA modulele periferice cu o anumită funcționalitate au o arhitectură
identică, indiferent de variantă. 13
Sistemul de tratare a evenimentelor (Event
System)
• Acest sistem reprezintă o caracteristică nouă si inovatoare pentru microcontrolerele AVR
XMEGA (el nu există la ATTiny sau ATMega) si a fost preluat la seriile Microchip AVR
modernizate
– Un sistem similar exista la microcontrolerele ARM Cortex -M
• Este un sistem care poate gestiona direct, fără intervenția unității centrale (CPU),
„comunicația” intre diverse module periferice, într-o relație cauză - efect.
• Sunt disponibile opt „canale” de comunicație pe care utilizatorul le poate configura.
• Un „canal” eveniment nu este o magistrală, ci o modalitate de a semnala si transmite mai
departe apariția doar unui singur eveniment apărut la nivelul unui modul periferic.
• Deoarece evenimentul folosește un canal hardware dedicat, tratarea lui este foarte
predictibilă si rapidă, întârzierea de tratare fiind de maxim două perioade ale ceasului
sistem.

14
Sistemul de tratare a evenimentelor
(Event System) -2
• Utilizarea conceptului de eveniment poate duce la
reducerea numărului de întreruperi care trebuie să fie
tratate de CPU, deoarece o întrerupere este si ea un
eveniment, dar aici nu este vorba de rutine de tratare
a întreruperilor, deoarece unitatea centrală nu este
implicată in tratare.
• Se obține astfel o degrevare a unității centrale de sarcini
de prelucrare, si eventual o creștere consistentă a
performantelor prin reducerea numărului de întreruperi
care ar trebui tratate.
• Mai mult, acest sistem poate funcționa independent,
chaiar si atunci când unitatea centrală este trecută intr-
un mod de lucru cu consum redus (sleep), ducând la o
reducere dramatică a consumului.

15
Sistemul de tratare a evenimentelor
(Event System) -3
• Câteva exemple de utilizare in care este vorba de
utilizarea unor evenimente pentru sincronizarea a două
module sau mai multe module periferice:
– cascadarea a două numărătoare/temporizatoare de 16 biți,
pentru a obține unul de 32 de biți, evenimentul transmis fiind
depășirea unuia din ele
– modificarea stării unui pin poate declanșa o operație de
conversie analog numerică si, in același timp, capturarea stării
unui numărător/temporizator, pentru a obține o ştampilă de timp
(time stamp) asociată măsurării respective
– un eveniment oarecare poate declanșa o operație de conversie
analog numerică, la terminarea conversiei (următorul
eveniment), rezultatul poate fi transferat direct in SRAM de
controlerul DMA, iar la următorul eveniment (de exemplu
apăsarea unui buton, schimbarea stării unui pin) controlerul
DMA transfera valoarea respectivă din SRAM direct la
convertorul numeric analogic (toate acestea putând fi făcute
chiar dacă unitatea centrală este intr-un mod sleep!)
16
Sistemul AWeX – Advanced
Waveform Extension
• Este o facilitate suplimentara de
utilizare a sistemului de
temporizare/numărare
• Reprezintă o dezvoltare a modului
de lucru generare formă de undă
(WG- Waveform Generation) cu
ajutorul unor unități de inserare de
timpi morți (DTI- Dead Time
Insertion)
• Este utilă mai ales pentru comanda
diverselor tipuri de motoare (sau
alte aplicații de electronica de
putere) pentru că permite
dezactivarea programabilă
circuitelor de comandă externe,
in scopul protecției la defect
(Fault Protection) a obiectului
comandat si cu ajutorul sistemului
de tratare a evenimentelor(Event
System)
• Permite generarea automata unei
anumite configurații de biți (Pattern
17
generation) pe pinii portului.
AVR XMEGA: funcționarea la tensiune
redusă de alimentare
• Toate microcontrolerele AVR XMEGA sunt testate, in
fabrică, la tensiunea minimă de alimentare, Vcc=1.6V.
• Toate perifericele si modulele care funcționează la 3.6V
funcționează până la 1.6V, sau la o tensiune de
alimentare nominală de 1.8V ±10%.
• Aceasta este valabil si pentru modulele interne FLASH,
EEPROM si toate perifericele analogice.
– O tensiune redusă de alimentare înseamnă un consum redus,
ducând la creșterea duratei de viață a bateriei/acumulatorului
pentru o aplicație portabila.
• Ceasul de gardă (watchdog) si circuitul pentru detecția
scăderii temporare a tensiunii de alimentare (brown-out
detection) au scheme noi față de ATMega, pentru a
permite minimizarea curentului de alimentare.

18
AVR XMEGA: sistemul de generare a
ceasului
• Sistemul de generare a ceasului este unul mult îmbunătățit in
comparație cu ATMega
• Sursa semnalului de ceas sistem si frecvența acestuia pot fi
modificate dinamic, in timpul funcționării si prin program, nu sunt
configurate doar static, cu ajutorul fuzibilelor, ca la ATMega sau
ATTiny.
• Sunt disponibile, putând fi selectate ca surse de ceas, oscilatoare
interne RC calibrate de 32MHz, 2MHz si 32.768kHz.
• Oscilatorul intern de 2MHz este oscilatorul care este utilizat
intotdeauna implicit după inițializare, acesta având si un timp de
start foarte scurt.
• Microcontrolerul poate începe să execute cod folosind această
sursă/frecvență de ceas, realizând eventual diverse inițializări
interne; ulterior, după ce si eventualul oscilator stabilizat cu cuarț a
pornit si este funcțional, se poate comuta pe sursa dorită de ceas.

19
AVR XMEGA: sistemul de generare a
ceasului -2
• Ceasul disponibil dintr-o sursă oarecare poate fi multiplicat prin utilizarea
unui PLL-Phase Locked Loop (buclă cu calare de fază) sau divizat cu
ajutorul unor divizoare, toate interne.
• Utilizând PLL-ul intern frecvența poate fi multiplicată x1, x2, x3, …, x31;
frecvența maximă optenabilă este de 128MHz, dar care nu poate fi
utilizată ca ceas sistem pentru CPU (a carui frecventa maxima este 32
MHz)
– In schimb ea poate fi utilizata pentru sistemul de temporizare/numărare permițând obținerea
unei modulații in durata (PWM) cu o rezoluție foarte mare.
• Un modul DFLL- Digital Frequency Locked Loop (o buclă digitală cu calare
in frecvență) face posibilă calibrarea dinamică, in timpul funcționării, a
oscilatoarelor interne.
• Precizia sporită obținută astfel face posibilă ca aplicații care au nevoie de o
dimensiune mai precisă a timpului/frecvenței, cum ar fi comunicațiile seriale
asincrone, să poate fi realizate la viteze mai mari si cu costuri mai mici (de
exemplu in acest caz se poate utiliza oscilatorul intern RC si nu este nevoie
de stabilizare cu un cristal de cuarț).
• O noua caracteristică utilă este si existenta unui sistem de
monitorizare/urmărire a unui defect al sursei externe de ceas, care
permite detecția absenței semnalului de ceas
– Acest sistem poate detecta un astfel de defect, de exemplu un defect al rezonatorului cu
cuarț extern, care va duce la dispariția ceasului.
– Intr-o astfel de situație de defect sursa de ceas este comutată automat pe oscilatorul RC
intern de 2 MHz, sistemul rămânând cvasi funcțional
20
AVR XMEGA: PMIC - controlerul de
întreruperi multi-nivel
• Deoarece un XMEGA este un AVR care are surse de întreruperi mai
multe si diverse decât un ATMEGA, se utilizează si un nou controler
de întreruperi, mai versatil decât cel anterior.
• Acest nou controler se numește PMIC – Programmable Multilevel
Interrupt Controller
• Acest sistem permite tratarea corespunzătoare in timp (timp de
răspuns scurt si predictibil) si conform unui sistem mai flexibil de
priorități.
• La fel ca la ATMega există o prioritizare a întreruperilor după nivele
de priorități si după adresa vectorului
• Adresele vectorilor sunt statice si la fel ca la ATMega pot fi plasate
in zona de aplicații sau zona bootloader a memoriei de program.
• Aici însă există 3 nivele selectabile de priorități: mic, mediu si mare.
• Pentru cele de nivel scăzut există si un algoritm de selecție de tip
Round-Robin, garantându-se astfel că toate cererile de întrerupere
vor fi tratate.
• Pentru funcțiile critice există si o întrerupere nemascabilă (NMI).
21
AVR XMEGA: interfața analogică-
convertorul analog numeric
• Noul sistem îmbunătățit de conversie analog numerică (ADC)
si noul sistem de conversie numeric analogică (DAC) au o
rezoluție de 12 biți.
– Este inclus si un senzor integrat de temperatură (ca intrare
internă a acestuia)
• Convertorul analog numeric (CAN) are acum o viteză
maximă de conversie de 2 Mega-eșantioane pe secundă, cu
2 intrări care pot fi eșantionate simultan si 4 intrări eșantionate
cvasi-simultan (pe durata a 1.5usec).
• O nouă facilitate a CAN este de a genera o întrerupere (sau
un eveniment) numai atunci când conversia este completă SI
rezultatul ei este sub sau deasupra unei anumite limite,
programabile (aceasta este programată intr-un registru de 12
biti).
– Astfel, ca un exemplu, nu vom mai „deranja” unitatea centrală, dacă
rezultatul conversiei este sub 1V, micșorându-i astfel încărcarea. 22
AVR XMEGA: interfața analogică-
convertorul analog numeric

23
AVR XMEGA: interfața analogică-
convertorul numeric-analogic
• Convertorul numeric-analogic (CNA) de 12 biți poate oferi două
ieșiri, chiar dacă microcontrolerul nu poate avea actualmente decât
un singur astfel de modul periferic DAC.
– Aceasta este posibil datorită existenței a două circuite de eșantionare –
memorare (S/H- Sample Hold) separate si diferite, conectate la ieșirea
sa.
• Comparatorul analogic (AC - Analog Comparator) are o nouă
caracteristică, un mod de lucru fereastră (window mode) care
utilizează două comparatoare in același timp.
• Astfel se pot programa 2 limite, una inferioară si una superioară, iar
rezultatul comparației poate fi evaluat ca fiind in interiorul ferestrei
(intre limite), sau in afara ei, sub limita inferioară sau peste cea
superioară.
• Mai mult, rezultatul comparației cu aceste limite poate fi oferit pe
niște pini de ieșire.

24
AVR XMEGA - interfața analogică-
convertorul analog numeric

25
AVR XMEGA - interfața pentru magistrala
externă (EBI- External Bus Interface)
• Interfața pentru magistrală externă a unui XMEGA asigură
conectarea unor memorii externe de date, cu interfață paralelă,
mult mai mari decât cele de la ATMega, de până la 512kB (EBI cu 2
porturi) sau 16MB (EBI cu 3 porturi).
• Se pot utiliza atât circuite de memorie SRAM (RAM static) cat si
SDRAM (RAM dinamic sincron).
• SDRAM-ul oferă un preț de cost per bit mai mic, dar nu poate fi
utilizat combinat in același masiv de memorie externă, împreună cu
circuite de memorie care au o interfață de tip SRAM: memoria
externa de date este fie SRAM fie SDRAM
• Datorită suportului pentru memorii de dimensiuni mari, timing-ul
instrucțiunilor care accesează aceste memorii este modificat.
• Mai mult, atunci când se compilează o aplicație care utilizează
memoria externă, compilare făcută pentru un model de memorie
mare (large memory model), tipurile de date utilizate pentru
adresare (pointers) sunt afectate, ele trebuind să aibă 24 de biți,
nu 16 biți.
26
AVR XMEGA - motorul de criptare (Crypto
Engine)
• Atunci când se dorește securizarea aplicației si/sau
implementarea unor protocoale de comunicație sigure, cu fir
sau fără, utilizarea tehnicilor criptografice de securizare si
autentificare a informației este esențială.
• AVR XMEGA oferă un suport hardware pentru implementarea
tehnicilor criptografice
• XMEGA implementează, cu ajutorul unui modul dedicat si a
setului de instrucțiuni, doua standarde utilizate pentru
criptarea si decriptarea informației, AES- Advanced
Encryption Standard si DES- Data Encryption Standard.
• Algoritmii AES si DES sunt implementați de fapt de un modul
periferic –motorul de criptare - un accelerator hardware de
algoritm care poate funcționa practic independent de unitatea
centrală, descărcând-o pe aceasta de sarcina computațională
• Algoritmul DES este suportat si prin intermediul unei
instrucțiuni noi in setul de instrucțiuni al unității centrale
• Modulul poate poate trata blocuri de date de 128 de biți
folosind chei de criptare AES de 128 de biți sau DES de 64 de
biți
Observație Dimensiunea cheilor de criptare de 64 sau 128 de
biti este însă una modestă, actualmente utilizându-se pentru o
securizare fiabilă chei de criptare de 192 si/sau 256 de biți. 27
AVR XMEGA: alte caracteristici utile

• In memoria FLASH poate fi definită o zonă numită


Tabela de aplicație (Application Table) care să
asigure o emulare, cu protecție la defect, a
memoriei EEPROM.
• Aceasta înseamnă că se pot memora aici variabile
nevolatile („constante”), separat de codul
programului.
• Variabilele „constante” utilizate pentru calibrarea
oscilatoarelor interne pot fi memorate intr-o astfel de
zonă specială.
• Aceasta zonă este accesibilă, la citire si scriere, atât
pentru aplicație cat si pentru interfața externă de
programare.
• Dar aceasta zona nu va fi ștearsă atunci când
trebuie să ștergem memoria de program, la
reprogramarea aplicației, lucru foarte util intr-o
sesiune de testare si depanare.
28
AVR XMEGA: alte caracteristici utile -
2
• Posibilitatea utilizării unor numere de serie unice per
unitate de microcontroler, pe lângă identificatorul de
tip care există si la ATMega sau ATtiny.
• Astfel orice microcontroler XMEGA are un identificator
unic.
– O „semnătură” unică pentru fiecare dispozitiv este utilă, de
exemplu, la identificarea nodurilor într-o rețea incorporată si/sau
la generarea secvențelor de numere aleatoare.
• Existența unui modul hardware de calcul CRC (CRC16
sau CRC32, sunt polinoame cu redundanță ciclică, pe
numărul respectiv de biți) utilizate pentru a verifica
consistența/validitatea informative (daca ea nu a fost
corupta din diverse motive), pentru următoarele surse de
date:
– Memoria de program Flash, pe durata de viață a aplicației
(periodic sau la fiecare pornire) sau după o re-programare
(actualizare a aplicației).
– Fluxul de date provenind de la o interfață I/O
– Fluxul de date provenind de la un canal DMA 29
AVR XMEGA: programarea si depanarea In
–System
• XMEGA nu mai are o interfață ISP (In-System
Programming) bazată pe interfața SPI cum are ATMega
– Aceasta nu înseamnă ca XMEGA nu a are un periferic standard
de tip SPI, acestea exista in continuare, sunt mai multe, dar nu
pot fi utilizate pentru programare ISP!
• De asemenea nu există nici o interfață cu un singur fir,
de tip DebugWIRE, cum găsim la unele microcontrolere
ATTiny.
• Ele au fost înlocuite cu o interfață nouă, tot serială si
sincronă, utilizabilă pentru programare si depanare,
având 2 fire (ceas si date bidirecționale), numită PDI -
Programming and Debugging Interface.
• In același timp, programarea si depanarea folosind o
interfață standard JTAG este in continuare posibilă.
• Emulatoarele AVR JTAG cum ar fi JTAGICE mkII,
produse după 2009, pot folosi pentru programare si
depanare ambele tipuri de interfețe, JTAG si PDI.
30
Alte considerații legate de proiectarea hardware –
condensatorii de decuplare a alimentării
• Deoarece XMEGA poate sa funcționeze la frecvențe de ceas mai mari decât ATMega
decuplarea corespunzătoare a bornelor / pinilor de alimentare este esențială pentru
menținerea unui nivel minim de zgomot
• Tipic fiecare pin de alimentare de tip Vcc trebuie decuplat, individual, la masă, cu un
capacitor ceramic multistrat, tipic in jur de 100nF.
• Astfel un ATXMEGA C3, într-o capsulă TQFP cu 64 de pini are, de exemplu, 6 perechi de pini
alăturați, Vcc si Gnd (inclusiv AVcc) distribuite relativ uniform pe cele 4 laturi ale capsulei (vezi
figura) pentru conectare cu ușurință, si cu o amprenta minima, a capacitorilor de decuplare a
alimentarii

31
Noile variante Attiny:Tiny AVR 1
(ATtiny seria 1)
• Tiny AVR 1 a fost prima (sub)familie apărută după cumpărarea lui Atmel
de către Microchip, fiind o familie care incorporează unele caracteristici ale
familiei XMEGA precum si unele caracteristici de la microcontrolerele PIC
Microchip.
• Este o familie ai cărei membrii (vezi mai jos) au o memorie de program
(Flash) maxima de 16 kOcteti/8 kcuvinte si capsule un număr maxim de 24
de pini, numai in variante SMD!
– Deocamdată exista in variante de încapsulare VQFN 3x3 si SOIC300 cu 20 de pini
• Tensiunea de alimentare este in gama 1.8..5.5V, corelata cu frecventa
maxima, care poate fi de la 5MHz la 1.8V la 20MHz la 5V
• Domeniul temperaturilor de lucru este de -40o..105oC sau -40o..125o C
• Prezentarea care urmează este doar una succintă punându-se accentul pe
resursele suplimentare fata de familia clasica ATtiny
– Restul informațiilor il găsiți in foile de catalog relevante!

32
Tiny AVR 1 vs. Tiny AVR
• Tiny AVR 1, pe lângă o
serie de noi periferice, are
si o nouă reprezentare (in
foile de catalog) si o nouă
organizare internă asociată
conceptului de periferice
independente de unitatea
centrala: Core
Independent Peripherals ,
concept care provine de la
Microchip
– Independente de unitatea
centrala adică se utilizează
cu ambele tipuri de unități
centrale de 8 biți: AVR si
PIC!
• In schema alăturată sunt
utilizate si noi acronime/
denumiri pentru periferice
care există deja la celelalte
familii de AVR; de exemplu
TCA in loc de Timer 0,
TCB, in loc de Timer 2,
sistemul de generare a
reset-ului se numește acum
RSTCTRL- Reset
Controller, etc. 33
Tiny AVR 1 vs. Tiny AVR – module noi
• Principalele diferențe ar fi, prin raportare si la schema bloc din
slide-ul anterior:
• CLKCTRL- Clock Controller , Clock Generation- sistemul de
generare a ceasului/ceasurilor este unul cu mai multe facilități si
mai flexibil decât la ATtiny si ATMega, dar mai puțin evoluat
decât cel de la XMEGA; nu are posibilitatea de multiplicare a
frecventei, dar există posibilitatea divizării frecvenței si a
modificării/ comutării ei dinamic
• UPDI- Universal Programming and Debugging Interface, o nouă
interfață de programare si depanare, de tip cu un singur fir (1-
Wire) oarecum similară cu interfața DebugWire
• CRCSCAN- Cyclic Redundancy Check Memory Scan, un modul
hardware care poate realiza verificarea întregii memorii Flash
folosind un polinom cu redundanță ciclică si poate semnala o
eroare (genera o întrerupere nemascabilă)
• DAC0- un sistem de conversie numeric analogic, cu un singur
canal, cu rezoluția de 8 biți
• EVSYS - Event System, sistem similar cu cel de la XMEGA,
dar ceva mai simplu, face posibilă “semnalizarea” directa de la
un periferic către altul, fără intervenția unității centrale
34
Tiny AVR 1 vs. Tiny AVR - module
noi - 2
• ADC/PTC- sistemul de conversie analog numeric ADC-Analog to
Digital Converter poate fi utilizat acum si ca un PTC- Peripheral
Touch Controller, împreună cu un modul hardware numit Qtouch
realizând astfel o nouă interfață care face posibilă detecția atingerii
(touch) unor senzori capacitivi externi
– Modulul Qtouch exista si la unele din variantele XMEGA
• VREF - Voltage References, un sistem flexibil de surse de tensiune
de referință, una pentru ADC si una pentru DAC, fiecare având 5
valori diferite: 0.55V, 1.1V, 1.5V, 2.5V, 4.3V
• CCL- Configurable Custom Logic, la fel ca la XMEGA este un circuit
logic programabil, cu care se pot implementa funcții logice
combinaționale sau secvențiale de relativ mică complexitate, dar
care poate elimina nevoia unor circuite numerice externe
suplimentare (glue logic).
• CPUINT- CPU Interrupt Controller, controlerul de intreruperi, este
similar, ca facilitați suplimentare cu cel de la XMEGA; are are nivele
de priorități, are o întrerupere nemascabila (NMI), etc.
• Setul de instrucțiuni - spre deosebire de varianta clasică de
ATTiny care nu are in setul de instrucțiuni de înmulțire (in virgula
fixa), ATTiny seria 1 are la nivelul CPU un multiplicator hardware (la
fel ca seria ATMega), existând astfel in setul de instrucțiuni toate
instrucțiunile de tip MUL 35

S-ar putea să vă placă și