Sunteți pe pagina 1din 9

MICROCONTROLERE AVR (ATMEL) PE 8 BITI PARTEA a II-a

5. Organizarea memoriei ATmega 16 AVR are dou spaii de memorie principal, spaiul 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 spaiului de memorie este aratat n figura 5.12. 5.1 Memoria pentru programe ATmega 16 conine o memorie flash pentru programe, reprogramabil (In-system On-chip) de 16 Koctei. Deoarece toate instruciunile nucleului AVR sunt de 16 sau 32 bii, memoria flash este organizat pe cuvinte (16 bii) n formatul 8Kx16. Pentru securitatea software-ului, spaiul pentru memoria de programe flash este mprit n dou seciuni: seciunea de program boot i seciunea pentru programe de aplicaie. Memoria flash suport cel puin 10000 de cicluri de scriere/tergere. Contorul de program (PC) al microcontrolerului ATmega 16 are o lungime de 13 bii, ceea ce permite adresarea unui spaiu de memorie de 213 = 8 Klocaii.

Figura 5.12 - Organizarea memoriei ATmega 16 5.2 Memoria de date Memoria de date SDRAM este organizat pe octei. Primele 96 de adrese din spaiul memoriei SDRAM sunt rezervate fiierului de registre, iar urmtoarele 1024 de locaii sunt dedicate datelor interne SDRAM. Din fiierul de registre fac parte cele 32 de registre de uz

general, iar restul de 64 de adrese sunt rezervate registrelor asociate dispozitivelor I/O. Modul de organizare a fiierului de registre este artat n figura 5.13. Memoria SRAM are o capacitate ntre 128 bytes i 4 Kbytes n funcie de tipul particular al microcontrolerului. SRAM-ul este accesat cu instruciuni de acces att direct, ct 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 - Fiierul de registre Toate microcontrolerele AVR posed o arie de memorie EEPROM (Electrically Erasable Programmable Read-Only Memory) intern folosit pentru stocarea constantelor. ATmega 16 conine 512 octei de memorie de date EEPROM. Aceasta este organizat ca un spaiu separat de date, n care pot fi citii i scrii bii individuali. EEPROM-ul are o durat de via de cel puin 10.000 de cicli scriere/tergere. Scrierea/citirea n EEPROM se face cu ajutorul regitrilor 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 acces pentru o operaie de scriere este de 2.54 ms n funcie de valoarea tensiunii de alimentare. Bitul de control EEWE din EECR arat utilizatorului cnd s-a ncheiat operaia anterioar de scriere, i poate fi fcut o nou scriere. Cnd se citete o dat din EEPROM, UCP este oprit timp de patru perioade de ceas nainte ca urmtoarea comand s fie executat. Cnd se scrie EEPROM, UCP este oprit timp de dou perioade de ceas nainte ca urmtoarea comand s fie executat. Registrele de adres EEPROM EEARH i EEARL:

Biii 9 15 sunt bii rezervai n ATmega 16 i vor lua ntotdeauna valoarea 0. Biii 0 8 sunt bii de adresare (total 9 bii, deci se adreseaz 0,5 KB). Registrele de adres, EEARH i EEARL, specific adresa datelor din EEPROM pentru cele 512 locaii ale spaiului EEPROM. Locaiile de memorie se adreseaz liniar de la 0 la 511. Pentru operaia de scriere n EEPROM, registrul EEDR conine date care trebuie scrise la adresa dat de registrul EEAR. Pentru operaia de citire a EEPROM, EEDR conine datele citite din EEPROM de la adresa dat de EEAR. Registrul de date EEPROM EEDR:

Registrul de control EEPROM EECR:

Biii 74 aceti bii sunt bii rezervai la ATmega 16 i au valoarea zero. Bit 3 EERIE: Activarea EEPROM Ready Interrupt Bit 2 EEMWE: EEPROM Master Write Enable (activarea funciei 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 verifice dac programarea memoriei flash este complet nainte de a iniia o nou scriere a EEPROM. Bit 0 EERE: Activarea citirii EEPROM. Cnd se seteaz adresa corect a registrului EEAR, bitul EERE trebuie s fie scris pe unu logic ca s declaneze citirea EEPROM. Accesul la citirea EEPROM se face cu o comand i datele cerute sunt disponibile imediat. Cnd EEPROM este citit, UCP este oprit timp de patru cicli nainte ca urmtoarea comand s fie executat. 5.3 Spaiul de adrese I/O Toate dispozitivele de I/O de la ATmega 16 i perifericele au adrese plasate n spaiul regitrilor de I/O. Locaiile de I/O sunt accesate cu instruciunile IN i OUT, transfernd date ntre cei 32 de regitri de lucru i spaiul de I/O. Registrele I/O au adresele $00$1F i sunt direct accesabile folosind comenzile SBI i CBI. La aceste registre valoarea biilor individuali poate fi verificat utiliznd instruciunile SBIS i SBIC. Cnd se utilizeaz instruciunile specifice IN i OUT trebuie folosite adresele de I/O din zona $00$3F. Cnd se adreseaz/acceseaz registrele de I/O ca spaiu de date cu instruciunile LD i ST, trebuie adugat la aceste adrese constanta $20, care indic un salt peste zona registrelor de uz general. 6. Sistemul I/O Microcontrolerele AVR posed un sistem diversificat de dispozitive de I/O adecvate aplicaiilor de comand, control, reglare, achiziii de date, comunicaie, .a. 3

6.1 Porturile de intrare/ieire ATmega16 dispune de 32 de linii de I/O grupate n patru porturi de 8 bii. Porturile sunt denumite cu literele A, B, C i D. Fiecare pin al unui port poate fi setat individual ca intrare sau ieire fr s afecteze ceilali pini. n plus, anumii pini se pot utiliza pentru funcii speciale ale microcontrolerului. n figura 5.15 este prezentat structura general a unui pin. Toi cei 32 de pini au fiecare cte o rezisten de agare (pull-up) care poate fi activat sau dezactivat. Operaiile cu porturile se fac prin intermediul unui set de 3 registre alocate fiecrui port: PORTx, PINx i DDRx; unde x poate fi A, B, C sau D. Aceste registre fac parte din categoria registrelor de intrare/ieire i pot fi accesate cu instruciunile CBI, SBI, IN i OUT. Registrele DDRx stabilesc dac un pin este intrare sau ieire. Astfel, un bit cu valoarea 1 n registrul DDRx face ca pinul corespunztor s fie considerat ieire; altfel pinul va fi intrare. Regitrii PORTx sunt utilizai pentru a scrie o valoare n portul corespunztor, iar regitrii PINx se folosesc pentru a citi valoarea prezent pe liniile unui port. Activarea sau dezactivarea rezistenelor pull-up este comandat de bitul PUD din registrul SFIOR i de valorile regitrilor PORTx i DDRx aa cum se poate observa n tabelul 6.1. Tabelul 6.1

Toate porturile AVR au funcia Citete Modific Scrie atunci cnd sunt folosite ca porturi de I/O digitale generale. Asta nseamn c direcia unui pin poate fi schimbat fr a schimba n mod intenionat direcia oricrui alt pin cu comenzile SBI i CBI. Aceiai regul se aplic cnd se schimb valoarea drive-ului (dac este configurat ca ieire) sau a activrii/dezactivrii rezistorilor (dac sunt configurai ca intrri). Fiecare buffer de intrare are caracteristici similare de comand, n ceea ce privete capacitatea sursei ct i sincronizarea. Etajul de comand al pinului este suficient de puternic pentru a comanda direct un display LED. Atunci cnd un pin este setat ca ieire rezistena pull-up este dezactivat, iar cnd este folosit ca intrare rezistena este activat. Toi pinii de I/O au rezistori pull-up care pot fi selectai individual. Toi pinii de I/O au diode de protecie att la Vcc, ct i la mpmntare aa cum este indicat n figura 5.16:

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 toi regitrii i referinele de bit sunt scrise n form general. Un x mic reprezint litera care denumete portul i un n mic reprezint numrul bitului. De exemplu, PORTB3 indic bitul numrul 3 al portului B, prezentat general ca PORTxn. Majoritatea pinilor au funcii alternative legate de funcionarea dispozitivelor periferice. De remarcat faptul c activarea funciilor alternative ale unor pini nu afecteaz utilizarea altor pini ca port de I/O general digital. Un exemplu de folosire a porturilor de I/O este dat n figura 5.17.

Figura 5.17 Folosirea porturilor de I/O

6.2

Unitile timer/numrtor

ATmega 16 posed dou uniti timer/numrtor de 8 bii i o unitate timer/numrtor de 16 bii. Principalele caracteristici ale acestor module sunt: - Posibilitatea de alegere a frecvenei de tact de la intrarea temporizatoarelor (circuit de prescalare); - Posibilitatea de citire/scriere a strii numrtoarelor; - Generarea de forme de und prin folosirea unui registru de comparare; - Generare de unde PWM cu posibilitatea de reglare a frecvenei; - Generarea de cereri de ntrerupere la intervale regulate; - Declanare la un eveniment extern (captur a intrrii). Unitile timer/numrtor fac posibil cronometrarea precis a execuiei programului (managementul evenimentelor), generarea de forme de und, msurarea intervalelor de timp. Structura unui temporizator de 8 bii este dat n figura 5.18. Funcionarea circuitului este controlat cu ajutorul registrului TCCRn care permite alegerea frecvenei de tact, controlul modului de generare a undelor, selecia modului de folosire a rezultatului unitii de comparare. Formele de und generate sunt disponibile la pinii porturilor de I/O.

Figura 5.18 Structura unui modul timer/numrtor de 8 bii Modulul UART/USART Modulul UART (Universal Asinchronous Receiver Transmiter) efectueaz recepia/transmisia datelor de la/ctre un dispozitiv periferic cu acces serie. Principalele caracteristici sunt: - Funcionare full-duplex complet att n modul sincron ct i n modul asincron; - Posed generator de rat de baud propriu de rezoluie mare; - Formate de date seriale diverse; - Detecteaz automat erorile de transmisie; - Execut comunicaii de tip multiprocesor. Modulul USART execut conversia serie/paralel a datelor la recepie, respectiv conversia paralel/serie la transmisie. Transmiterea datelor este iniializat prin scrierea datelor care trebuie transmise n registrul UDR (UART Data Register). Datele sunt transferate de la UDR la registrul Transmit Shift cnd: 1. Un nou caracter este scris n UDR i caracterul precedent a fost deja transferat. Registrul de deplasare este ncrcat imediat. 2. Un nou caracter este scris n UDR nainte ca un caracter precedent s fi fost transferat complet. Registul de deplasare este ncrcat dup ce prima operaie a fost finalizat. Interfaa SPI Interfaa de comunicaie SPI (Serial Periferal Interface) asigur transferul rapid sincron de date ntre microcontroler i dispozitivele periferice sau cu alte microcontrolere AVR. Interfaa TWI Interfaa TWI (Two Wire Interface) implementeaz un protocol de comunicaie pe dou fire permind interconectarea a pn la 128 de dispozitive diferite. Interfaa folosete

dou linii bidirecionale, 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 Interfaa TWI Convertorul A/D ATmega 16 conine un convertor A/D cu aproximaii succesive, cu 8 canale i cu rezoluia de 10 bii. Convertorul este prevzut la intrare cu circuit de eantionare i memorare. Viteza de conversie este cuprins ntre 13 i 260 de Comparatorul analogic Compar dou mrimi analogice i genereaz o cerere de ntrerupere cnd acestea sunt egale. Timerul watchdog Timerul watchdog (timer de urmrire) este folosit pentru a reseta microcontrolerul atunci cnd, din cauza unei erori, programul se blocheaz ntr-o bucl infinit. El este format dintr-un oscilator i un circuit de prescalare. Prin alegerea factorului de prescalare pot fi selectate opt perioade diferite de resetare a timerului. Timerul watchdog este resetat la execuia instruciunii WDR, la dezactivare sau la iniializarea procesorului prin RESET. Cnd perioada de resetare expir fr ca timerul s fie reiniializat el activeaz un semnal de iniializare a procesorului. Timerul watchdog este comandat de un oscilator propriu de tip RC care funcioneaz la o frecven de 1 MHz.

Modurile de operare cu consum redus Mictrocontrolerul AVR posed 6 moduri de funcionare cu consum redus care pot fi comandate prin intermediul registrului MCUCR (MCU Control Register). Reducerea consumului se realizeaz prin blocarea modulelor care nu sunt folosite. Pentru aceasta seteaz bitul SE (Sleep Enable) i biii SM2, SM1 i SM0 (Sleep Mode) dup care se execut instruciunea SLEEP. Regimurile de consum redus disponibile sunt: IDLE Mode UCP este oprit, dar interfeele USART, SPI, TWI, CAD, comparatorul analogic, timerele i sistemul de ntreruperi continu s funcioneze. O cerere de ntrerupere readuce procesorul n stare de funcionare. ADC Noise Reduction Mode UCP este oprit, ns continu s funcioneze CAD, ntreruperile externe, interfaa TWI, timerul 2 i timerul de urmrire continu s funcioneze. Acest regim permite CAD s funcioneze cu o rezoluie mai mare. O cerere de ntrerupere readuce procesorul n stare de funcionare. 8

POWER-DOWN Mode oscilatorul extern este blocat, ns rmn active ntreruperile externe, interfaa TWI i timerul de urmrire. POWER-SAVE Mode este similar cu modul Power-down cu diferena c i timerul 2 continu s funcioneze. STANDBY Mode este identic cu modul Power-down cu deosebirea c oscilatorul continu s funcioneze. EXTENDED STANDBY Mode este disponibil atunci cnd este folosit un oscilator cu cuar, iar n rest este identic cu modul Power-down.

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