ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011

9
 1 MICROCONTROLERE AVR (ATMEL) PE 8 BITI PARTEA a II-a 5. Organizarea memoriei ATmega 16 AVR are două spaţii de memorie principală, spaţiul pentru memoria de date si pentru memoria de program. În plus, ATmega16 are şi o memorie nevolatilă EEPROM pentru memorarea datelor. Toate cele trei tipuri de memorie sunt adresate liniar. Organizarea spaţiului de memorie este aratat ă în figura 5.12. 5.1 Memoria pentru programe ATmega 16 conţine o memorie flash pentru programe, re  programabilă (In-system On-chip) de 16 Kocteţi. Deoarece toate instrucţiunile nucleului AVR sunt de 16 sau 32 bi ţi, memoria flash este organizat ă  pe cuvinte (16 bi ţi) în formatul 8Kx16. Pentru securitatea software-ului, spaţiul pentru memoria de programe flash este împ ăr ţit în două secţiuni: secţiunea de program boot şi secţiunea pentru programe de aplica ţie. Memoria flash suportă cel puţin 10000 de cicluri de scriere/ştergere. Contorul de  program (PC) al microcontrolerului ATmega 16 are o lungime de 13 biţ i, ceea ce permite adresarea unui spaţiu de memorie de 2 13  = 8 Klocaţii. Figura 5.12 - Or ganizarea memoriei ATmega 16 5.2 Memoria de date Memoria de date SDRAM este organizat ă pe octeţi. Primele 96 de adrese din spa ţiul memoriei SDRAM sunt rezervate fişierului de registre, iar următoarele 1024 de loca ţii sunt dedicate datelor interne SDRAM. Din fi şierul de registre fac parte cele 32 de registre de uz

Transcript of ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011

Page 1: ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011

5/16/2018 ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011 - slidepdf.com

http://slidepdf.com/reader/full/atmel-avr-8biti-partea-a-ii-a-curs-mc-71012011 1/9

1

MICROCONTROLERE AVR (ATMEL) PE 8 BITI

PARTEA a II-a

5. Organizarea memoriei

ATmega 16 AVR are două spaţii de memorie principală, spaţiul pentru memoria dedate si pentru memoria de program. În plus, ATmega16 are şi o memorie nevolatilă EEPROM pentru memorarea datelor. Toate cele trei tipuri de memorie sunt adresate liniar.Organizarea spaţiului de memorie este aratată în figura 5.12.

5.1 Memoria pentru programeATmega 16 conţine o memorie flash pentru programe, re programabilă (In-system

On-chip) de 16 Kocteţi. Deoarece toate instrucţiunile nucleului AVR sunt de 16 sau 32 biţi,memoria flash este organizată pe cuvinte (16 biţi) în formatul 8Kx16. Pentru securitatea

software-ului, spaţiul pentru memoria de programe flash este împărţit în două secţiuni:secţiunea de program boot şi secţiunea pentru programe de aplicaţie.

Memoria flash suportă cel puţin 10000 de cicluri de scriere/ştergere. Contorul deprogram (PC) al microcontrolerului ATmega 16 are o lungime de 13 biţi, ceea ce permiteadresarea unui spaţiu de memorie de 213 = 8 Klocaţii.

Figura 5.12 - Organizarea memoriei ATmega 16

5.2 Memoria de dateMemoria de date SDRAM este organizată pe octeţi. Primele 96 de adrese din spaţiul

memoriei SDRAM sunt rezervate fişierului de registre, iar următoarele 1024 de locaţii sunt

dedicate datelor interne SDRAM. Din fişierul de registre fac parte cele 32 de registre de uz

Page 2: ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011

5/16/2018 ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011 - slidepdf.com

http://slidepdf.com/reader/full/atmel-avr-8biti-partea-a-ii-a-curs-mc-71012011 2/9

2

general, iar restul de 64 de adrese sunt rezervate registrelor asociate dispozitivelor I/O. Modulde organizare a fişierului de registre este arătat în figura 5.13.

Memoria SRAM are o capacitate între 128 bytes şi 4 K bytes în funcţie de tipulparticular al microcontrolerului. SRAM-ul este accesat cu instrucţiuni de acces atât direct, câtşi indirect, folosind registrul pointer. SRAM-ul este folosit de asemenea şi pentru constituirea

stivei. Accesul la memoria SRAM se face în două perioade de tact.

Figura 5.13 - Fişierul de registre

Toate microcontrolerele AVR posedă o arie de memorie EEPROM (ElectricallyErasable Programmable Read-Only Memory) internă folosită pentru stocarea constantelor.ATmega 16 conţine 512 octeţi de memorie de date EEPROM. Aceasta este organizată ca unspaţiu separat de date, în care pot fi citiţi şi scrişi biţi individuali. EEPROM-ul are o durată deviaţă de cel puţin 10.000 de cicli scriere/ştergere. Scrierea/citirea în EEPROM se face cuajutorul regiştrilor de acces la EEPROM: EEAR (EEPROM Address Register), EEDR(EEPROM Data Register) şi EECR (EEPROM Control Register).

Scrierea în EEPROM decurge diferit faţă de o memorie SRAM. Timpul de accespentru o operaţie de scriere este de 2.5÷4 ms în funcţie de valoarea tensiunii de alimentare.Bitul de control EEWE din EECR arată utilizatorului când s-a încheiat operaţia anterioară descriere, şi poate fi f ăcută o nouă scriere. Când se citeşte o dată din EEPROM, UCP este oprită 

timp de patru perioade de ceas înainte ca următoarea comandă să fie executată. Când se scrieEEPROM, UCP este oprită timp de două perioade de ceas înainte ca următoarea comandă să fie executată.

Registrele de adresă EEPROM – EEARH şi EEARL:

Page 3: ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011

5/16/2018 ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011 - slidepdf.com

http://slidepdf.com/reader/full/atmel-avr-8biti-partea-a-ii-a-curs-mc-71012011 3/9

3

Biţii 9 ÷ 15 sunt biţi rezervaţi în ATmega 16 şi vor lua întotdeauna valoarea 0.Biţii 0 ÷ 8 sunt biţi de adresare (total 9 biţi, deci se adresează 0,5 KB).Registrele de adresă, EEARH şi EEARL, specifică adresa datelor din EEPROM

pentru cele 512 locaţii ale spaţiului EEPROM. Locaţiile de memorie se adresează liniar de la0 la 511. Pentru operaţia de scriere în EEPROM, registrul EEDR conţine date care trebuie

scrise la adresa dată de registrul EEAR. Pentru operaţia de citire a EEPROM, EEDR conţinedatele citite din EEPROM de la adresa dată de EEAR.

Registrul de date EEPROM – EEDR:

Registrul de control EEPROM – EECR:

Biţii 7÷4 –  aceşti biţi sunt biţi rezervaţi la ATmega 16 şi au valoarea zero.Bit 3 – EERIE: Activarea EEPROM Ready InterruptBit 2  – EEMWE: EEPROM Master Write Enable (activarea funcţiei principale de

scriere EEPROM)Bitul 1 – EEWE: EEPROM Write Enable (activarea scrierii EEPROM). EEPROM

nu poate fi programat în timp ce UCP scrie memoria flash. Software-ul trebuie să verificedacă programarea memoriei flash este completă înainte de a iniţia o nouă scriere a EEPROM.Bit 0 – EERE: Activarea citirii EEPROM.

Când se setează adresa corectă a registrului EEAR, bitul EERE trebuie să fie scris

 pe unu logic ca să declanşeze citirea EEPROM. Accesul la citirea EEPROM se face cu ocomandă şi datele cerute sunt disponibile imediat. Când EEPROM este citit, UCP este oprită timp de patru cicli înainte ca următoarea comandă să fie executată.

5.3 Spaţiul de adrese I/O

Toate dispozitivele de I/O de la ATmega 16 şi perifericele au adrese plasate în

spaţiul regiştrilor de I/O. Locaţiile de I/O sunt accesate cu instrucţiunile IN şi OUT,transferând date între cei 32 de regiştri de lucru şi spaţiul de I/O. Registrele I/O au adresele$00÷$1F şi sunt direct accesabile folosind comenzile SBI şi CBI. La aceste registre valoarea

 biţilor individuali  poate fi verificată utilizând instrucţiunile SBIS şi SBIC.Când se utilizează instrucţiunile specifice IN şi OUT trebuie folosite adresele de I/O

din zona $00÷$3F. Când se adresează /accesează registrele de I/O ca spaţiu de date cuinstrucţiunile LD şi ST, trebuie adăugat la aceste adrese constanta $20, care indică un saltpeste zona registrelor de uz general.

6.  Sistemul I/O

Microcontrolerele AVR posedă un sistem diversificat de dispozitive de I/O adecvateaplicaţiilor de comandă, control, reglare, achiziţii de date, comunicaţie, ş.a.

Page 4: ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011

5/16/2018 ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011 - slidepdf.com

http://slidepdf.com/reader/full/atmel-avr-8biti-partea-a-ii-a-curs-mc-71012011 4/9

4

6.1  Porturile de intrare/ieşireATmega16 dispune de 32 de linii de I/O grupate în patru porturi de 8 biţi. Porturile

sunt denumite cu literele A, B, C şi D. Fiecare pin al unui port poate fi setat individual caintrare sau ieşire fără să afecteze ceilalţi pini. În plus, anumiţi pini se pot utiliza pentru funcţii

speciale ale microcontrolerului. În figura 5.15 este  prezentată structura generală a unui pin.Toţi cei 32 de pini au fiecare câte o rezistenţă de agăţare („pull-up”) care poate fi activată saudezactivată. 

Operaţiile cu porturile se fac prin intermediul unui set de 3 registre alocate fiecărui

 port: PORTx, PINx şi DDRx; unde  x poate fi A, B, C sau D. Aceste registre fac parte dincategoria registrelor de intrare/ieşire şi pot fi accesate cu instrucţiunile CBI, SBI, IN şi OUT.

Registrele DDRx stabilesc dacă un pin este intrare sau ieşire. Astfel, un bit cuvaloarea „1” în registrul DDRx face ca pinul corespunzător să fie considerat ieşire; altfelpinul va fi intrare. Regiştrii PORTx sunt utilizaţi pentru a scrie o valoare în portulcorespunzător , iar regiştrii PINx se folosesc pentru a citi valoarea prezentă pe liniile unuiport. Activarea sau dezactivarea rezistenţelor „pull-up” este comandată de bitul PUD dinregistrul SFIOR şi de valorile regiştrilor PORTx şi DDRx aşa cum se poate observa în tabelul6.1.

Tabelul 6.1

Toate porturile AVR au funcţia „Citeşte – Modifică  – Scrie” atunci când sunt folositeca porturi de I/O digitale generale. Asta înseamnă că direcţia unui pin poate fi schimbată f ără a schimba în mod intenţionat direcţia oricărui alt pin cu comenzile SBI şi CBI. Aceiaşi regulă se aplică când se schimbă valoarea drive-ului (dacă este configurat ca ieşire) sau aactivării/dezactivării rezistorilor (dacă sunt configuraţi ca intrări). Fiecare buffer de intrareare caracteristici similare de comandă, în ceea ce priveşte capacitatea sursei cât şisincronizarea. Etajul de comandă al pinului este suficient de puternic pentru a comanda directun display LED. Atunci când un pin este setat ca ieşire rezistenţa „pull-up” este dezactivată,

iar când este folosit ca intrare rezistenţa este activată.Toţi pinii de I/O au rezistori pull-up care pot fi selectaţi individual. Toţi pinii de I/O

au diode de protecţie atât la Vcc, cât şi la împământare aşa cum este indicat în figura 5.16:

Page 5: ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011

5/16/2018 ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011 - slidepdf.com

http://slidepdf.com/reader/full/atmel-avr-8biti-partea-a-ii-a-curs-mc-71012011 5/9

5

Figura 5.15 - Structura unei linii pentru un bit al portului I/O

Figura 5.16 - Schema echivalenta a unui pin

În limbaj de asamblare toţi regiştrii şi referinţele de bit sunt scrise în formă generală.Un „ x” mic reprezintă litera care denumeşte portul şi un „n” mic reprezintă numărul bitului.De exemplu, PORTB3 indică bitul numărul 3 al portului B, prezentat general ca PORTxn.

Majoritatea pinilor au funcţii alternative legate de funcţionarea dispozitivelorperiferice. De remarcat faptul că activarea funcţiilor alternative ale unor pini nu afectează utilizarea altor pini ca port de I/O general digital. Un exemplu de folosire a porturilor de I/Oeste dat în figura 5.17.

Page 6: ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011

5/16/2018 ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011 - slidepdf.com

http://slidepdf.com/reader/full/atmel-avr-8biti-partea-a-ii-a-curs-mc-71012011 6/9

6

Figura 5.17 Folosirea porturilor de I/O

6.2  Unităţile timer/numărător

ATmega 16 posedă două unităţi timer/numărător de 8 biţi şi o unitatetimer/numărător de 16 biţi. Principalele caracteristici ale acestor module sunt:

-  Posibilitatea de alegere a frecvenţei de tact de la intrarea temporizatoarelor (circuitde prescalare);

-  Posibilitatea de citire/scriere a stării numărătoarelor;-  Generarea de forme de undă prin folosirea unui registru de comparare;-  Generare de unde PWM cu posibilitatea de reglare a frecvenţei;-  Generarea de cereri de întrerupere la intervale regulate;

-  Declanşare la un eveniment extern (captură a intrării).Unităţile timer/numărător fac posibilă cronometrarea precisă a execuţiei

programului (managementul evenimentelor), generarea de forme de undă, măsurareaintervalelor de timp.

Structura unui temporizator de 8 biţi este dată în figura 5.18. Funcţionareacircuitului este controlată cu ajutorul registrului TCCRn care permite alegerea frecvenţei detact, controlul modului de generare a undelor, selecţia modului de folosire a rezultatuluiunităţii de comparare. Formele de undă generate sunt disponibile la pinii porturilor de I/O.

Page 7: ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011

5/16/2018 ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011 - slidepdf.com

http://slidepdf.com/reader/full/atmel-avr-8biti-partea-a-ii-a-curs-mc-71012011 7/9

7

Figura 5.18 Structura unui modul timer/numărător de 8 biţi

Modulul UART/USART

Modulul UART (Universal Asinchronous Receiver Transmiter) efectuează recepţia/transmisia datelor de la/către un dispozitiv periferic cu acces serie. Principalelecaracteristici sunt:

- Funcţionare full-duplex completă atât în modul sincron cât şi în modul asincron;- Posedă generator de rată de baud propriu de rezoluţie mare;- Formate de date seriale diverse;- Detectează automat erorile de transmisie;- Execută comunicaţii de tip multiprocesor.Modulul USART execută conversia serie/paralel a datelor la recepţie, respectiv

conversia paralel/serie la transmisie. Transmiterea datelor este iniţializată prin scriereadatelor care trebuie transmise în registrul UDR (UART Data Register). Datele sunttransferate de la UDR la registrul Transmit Shift când:

1.  Un nou caracter este scris în UDR şi caracterul precedent a fost deja 

transferat. Registrul de deplasare este încărcat imediat.2.  Un nou caracter este scris în UDR înainte ca un caracter precedent să fi fosttransferat complet. Registul de deplasare este încărcat după ce prima operaţie a fost finalizată.

Interfaţa SPI

Interfaţa de comunicaţie SPI (Serial Periferal Interface) asigură transferul rapidsincron de date între microcontroler şi dispozitivele periferice sau cu alte microcontrolereAVR.

Interfaţa TWIInterfaţa TWI (Two Wire Interface) implementează un protocol de comunicaţie pe

două fire permiţând interconectarea a până la 128 de dispozitive diferite. Interfaţa foloseşte

Page 8: ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011

5/16/2018 ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011 - slidepdf.com

http://slidepdf.com/reader/full/atmel-avr-8biti-partea-a-ii-a-curs-mc-71012011 8/9

8

două linii bidirecţionale, una pentru tact (SCL) şi una pentru date (SDA) ca în figura 5.19.Toate dispozitivele conectate la această magistrală au propria adresă.

Figura 5.19 Interfaţa TWI

Convertorul A/DATmega 16 conţine un convertor A/D cu aproximaţii succesive, cu 8 canale şi cu

rezoluţia de 10 biţi. Convertorul este prevăzut la intrare cu circuit de eşantionare şimemorare. Viteza de conversie este cuprinsă între 13 şi 260 de

Comparatorul analogicCompară două mărimi analogice şi generează o cerere de întrerupere când acestea

sunt egale.

Timerul watchdogTimerul watchdog („timer de urmărire”) este folosit pentru a reseta microcontrolerul

atunci când, din cauza unei erori, programul se blochează într-o buclă infinită. El este formatdintr-un oscilator şi un circuit de prescalare. Prin alegerea factorului de prescalare pot fiselectate opt perioade diferite de resetare a timerului. Timerul watchdog este resetat laexecuţia instrucţiunii WDR, la dezactivare sau la iniţializarea procesorului prin RESET. Cândperioada de resetare expiră f ără ca timerul să fie reiniţializat el activează un semnal deiniţializare a procesorului. Timerul watchdog este comandat de un oscilator propriu de tip RCcare funcţionează la o frecvenţă de 1 MHz.

Modurile de operare cu consum redusMictrocontrolerul AVR posedă 6 moduri de funcţionare cu consum redus care pot fi

comandate prin intermediul registrului MCUCR (MCU Control Register). Reducereaconsumului se realizează prin blocarea modulelor care nu sunt folosite. Pentru aceastasetează bitul SE (Sleep Enable) şi biţii SM2, SM1 şi SM0 (Sleep Mode) după care se execută instrucţiunea SLEEP. Regimurile de consum redus disponibile sunt:

  IDLE Mode  –  UCP este oprită, dar interfeţele USART, SPI, TWI, CAD,comparatorul analogic, timerele şi sistemul de întreruperi continuă să funcţioneze. O cererede întrerupere readuce procesorul în stare de funcţionare.

  ADC Noise Reduction Mode – UCP este oprită, însă continuă să funcţioneze

CAD, întreruperile externe, interfaţa TWI, timerul 2 şi timerul de urmărire continuă să funcţioneze. Acest regim permite CAD să funcţioneze cu o rezoluţie mai mare. O cerere de întrerupere readuce procesorul în stare de funcţionare.

Page 9: ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011

5/16/2018 ATMEL AVR 8biti Partea a II -A Curs MC 7[1].01.2011 - slidepdf.com

http://slidepdf.com/reader/full/atmel-avr-8biti-partea-a-ii-a-curs-mc-71012011 9/9

9

  POWER-DOWN Mode  –  oscilatorul extern este blocat, însă rămân active 

 î ntreruperile externe, interfaţa TWI şi timerul de urmărire.  POWER-SAVE Mode – este similar cu modul Power-down cu diferenţa că şi

timerul 2 continuă să funcţioneze.  STANDBY Mode  –  este identic cu modul Power-down cu deosebirea că 

oscilatorul continuă să funcţioneze.  EXTENDED STANDBY Mode – este disponibil atunci când este folosit un

oscilator cu cuarţ, iar în rest este identic cu modul Power-down.