Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Microcontroler - Memoria de date EEPROM

Microcontroler - Memoria de date EEPROM

PIC16F84 are 64 de bytes de locatii de memorie EEPROM la adresele de la 00h la 63h unde se poate scrie sau de unde se poate citi. Cea mai importanta caracteristica a acestei memorii este ca nu pierde continutul in timpul inchideri sursei de alimentare. Aceasta inseamna practic ca ceea ce a fost scris in ea va ramane chiar si cand microcontrolerul este inchis. Datele pot fi retinute in EEPROM fara sursa de alimentare pana la 40 de ani. (dupa cum declara producatorul lui PICD16F84), si se pot executa 10000 de cicluri de scriere. 

In practica, memoria EEPROM este folosita pentru stocarea unor date importante sau a unor parametri de proces.
Un asemenea parametru este o temperatura data, asignata cand se seteaza un regulator de temperatura la un proces. Daca nu s-a retinut, va fi nevoie sa se ajusteze temperatura data dupa fiecare intrerupere a alimentarii. Pentru ca aceasta este foarte  nepractic (chiar periculos), producatorii de microntrolere au inceput sa instaleze un tip mai mic de memorie EEPROM.

Memoria EEPROM este plasata intr-un loc special al memoriei si poate fi accesata prin registri speciali. Acesti registri sunt:

. EEDATA la adresa 08h, care retine datele de citit sau cele de scris.  
. EEADR la adresa 09h, ce contine o adresa a locatiei EEPROM ce este accesata.  
. EECON1 la adresa 88h, ce contine biti de control.
. EECON2 la adresa 89h. Acest registru nu exista fizic si serveste la protejarea EEPROM-ului de scrieri accidentale.

Registrul EECON1 la adresa 88h este un registru de control cu 5 biti implementati.  
Bitii 5, 6 si 7 nu sunt folositi, si prin citire sunt totdeauna zero. Interpretarea bitilor registrului EECON1 urmeaza.

Registrul EECON1



bit 0 RD (Read Control bit-bit Control Citire) 
Setarea acestui bit initializeaza transferul de date definit in EEADR la registrul EEDATA. Pentru ca timpul nu este esential in citirea datelor ca la scriere, datele din EEDATA pot fi deja folosite in urmatoarea instructiune.
1=initializeaza citirea
0=nu initializeaza citirea

bit 1 WR (Write Control bit-bit Control Scriere) 
Setarea acestui bit initializeaza scrierea datelor din registrul EEDATA la adresa specifcata prin registrul EEADR. 
1=initializeaza scrierea  
0=nu initializeaza scrierea

bit 2 WREN (EEPROM Write Enable bit-bit Permite Scrierea EEPROM) Permite scrierea in EEPROM
Daca acest bit nu a fost setat, microcontrolerul nu va permite scrierea in EEPROM.
1=scriere permisa
0=scriere interzisa

bit 3 WRERR (Write EEPROM Error Flag-Stegulet Eroare Scriere EEPROM ) Eroare in timpul scrierii in EEPROM
Acest bit a fost setat doar in caz ca scrierea in EEPROM a fost intrerupta de un semnal sau prin terminarea timpului din timer-ul watchdog (daca este activat).
1=a avut loc eroare
0=nu a avut loc eroare

bit 4 EEIF (EEPROM Write Operation Interrupt Flag bit-bit Stegulet Intrerupere Operatie Scriere EEPROM) Bit folosit pentru a informa ca scrierea datelor s-a terminat.
Cand s-a terminat scrierea, acest bit va fi setat automat. Programtorul trebuie sa stearga bitul EEIF in programul sau pentru a detecta noua terminare a scrierii. 
1=scrierea terminata
0=scrierea inca neterminata, sau inca nu a inceput

Citirea din memoria EEPROM

Setarea bitului RD initializeaza transferul de date de la adresa gasita in EEADR la registrul EEDATA. Ca si la citirea datelor nu avem nevoie de atat de mult timp ca la scriere, datele luate din registrul EEDATA pot deja fi folosite mai departe in urmatoarea instructiune. 

O mostra a partii programului ce citeste datele in EEPROM, ar putea arata ca mai jos: 

Dupa ultima instructiune de program, continutul de la o adresa EEPROM zero poate fi gasit in registrul w.

Scrierea in memoria EEPROM

Pentru a scrie datele in locatia EEPROM, programatorul trebuie mai intai sa scrie adresa in registrul EEADR si datele in registrul EEDATA. Numai atunci este folositor de a seta bitul WR ce pune totul in miscare. Bitul WR va fi resetat, si bitul EEIF setat urmand o scriere ce poate fi folosita in procesarea intreruperilor. Valorile 55h si AAh sunt prima si a doua cheie care interzic ca scrierea accidentala in EEPROM sa se intample. Aceste doua valori sunt scrise in EECON2 care serveste doar pentru acel scop, de a primi aceste doua valori si de a preveni orice scriere accidentala in memoria EEPROM. Liniile de program marcate ca 1, 2, 3 si 4 trebuie sa fie executate in acea ordine in intervale egale de timp. De aceea este foarte important, sa inchideti intreruperile ce ar putea schimba timpul necesar pentru executare instructiunilor. Dupa scriere, intreruperile, pot fi permise din nou.


Exemplu unei parti a programului ce scrie datele 0xEE in prima locatie in memoria EEPROM ar putea arata ca mai jos: