GESTIRE LA MEMORIA EEPROM
La memoria EEPROM permette di memorizzare delle byte in modo non volatile. Gli indirizzi disponibili per questa area di memoria sono 256 (0 a 255). La procedura sintatticamente corretta è la seguente :
scrivere EEPROM
// prototipo della libreria per scrivere su eeprom
.
.
.
.
.
//usare libreria per scrivere su eeprom
EEPROM_write (indirizzo, dato);
nota – mi raccomando di dichiarare le variabili prima di usarle.
Leggere EEPROM
// prototipo della libreria per scrivere su eeprom
.
.
unsigned short lettura; // dichiariamo “lettura” come variabile per caricare il valore delle celle.
.
.
//usare libreria per scrivere su eeprom
lettura = EEPROM_read (indirizzo); //memorizza nella variabile lettura il contenuto della cella
quindi il programma si presenta così :
// prototipi delle funzioni
unsigned short Eeprom_Read (unsigned int);
void Eeprom_write (unsigned int, unsigned int);
.
.
.
// routine lettura Eeprom
char var; // variabile che contiene l'indirizzo da leggere
char var1; // variabile in cui caricare il contenuto dell'indirizzo puntato
.
.
var1 = Eeprom_Read (var); // assegna il contenuto dell'indirizzo var alla variabile var1
.
.
.
// routine scrittura EEPROM
.
.
char var3, var4; //variabili che contengono il valore e l'indirizzo per la scrittura
.
.
var3 = valore;
var4 = indirizzo;
.
.
Eeprom_Write (var4, var3); // scrive all'indirizzo var4 il dato var3
.
.
Ovviamente, al posto delle variabili, posso inserire direttamente i valori se questi non devono cambiare. Durante l'esecuzione della funzione di scrittura, le interruzioni vengono disattivate (GIE=0). Vengono riattivate automaticamente dopo l'uscita dalla funzione di scrittura. Successivamente a una scrittura, devo attendere 20 ms prima di avviare un altro processo di scrittura.