La memoria Flash
La memoria programma dei PIC18 è realizzata in tecnologia
Flash. Questa fa si che il contenuto delle celle sia modificabile alla
stessa tensione di lavoro del processore: il contenuto della memoria
programma può essere modificato, letto, scritto, cancellato direttamente
durante il funzionamento del programma, senza bisogno di dispositivi esterni
o tensioni ausiliarie.
-
La lettura della memoria flash è eseguibile 1 byte per
volta.
-
La scrittura è effettuabile a blocchi di 8 bytes.
-
La cancellazione è effettuabile a blocchi di 64 bytes.
La memoria programma non è accessibile durante la scrittura
o la cancellazione e un timer interno stabilisce le temporizzazioni di
queste operazioni.
Allo scopo di fornire un valido supporto a queste
operazioni, il set di istruzioni enhanced contiene alcune istruzioni
specifiche per la lettura e la scrittura della memoria Flash.
Table Read & Table Write
Le istruzioni di lettura e scrittura della memoria programma
sono:
-
Table Read (TBLRD)
-
Table Write (TBLWT)
Va ricordato che, trattandosi di architettura Harvard, bus dati e bus codici
sono separati e di diversa ampiezza: il bus della memoria programma (Flash)
è a 16 bit, mentre quello della memoria dati (RAM) è a 8 bit.
Per portare i registri della Flash in RAM e viceversa, le istruzioni di
Table Write e Table Read fanno uso di un registro intermedio, chiamato TABLAT
- TABle LaTch register), a 8 bit.
Table Read legge un dato a 8 bit da un registro di memoria
programma e lo copia nel registro TABLAT, che è in RAM.
Un puntatore a 3 bytes TBLPTR punta una locazione di
memoria programma e il contenuto di questa viene copiato nel TABLAT, che è
mappato in RAM nell' area degli SFR.
TBLPTRU:H:L è indispensabile per coprire l' intero lo spazio di
indirizzamento.
Analogamente avviene la scrittura della memoria Flash.
I registri di controllo
Alcuni registri di controllo sono associati alle istruzioni
di lettura e scrittura della Flash.
-
EECON1
-
EECON2
-
TABLAT
-
TBLPTR
EECON1 e EECON2 sono comuni alle operazioni
sulla EEPROM; in particolare EECON2 non è un registro reale
ed è usato esclusivamente per le sequenze di scrittura e cancellazione
della memoria. Una lettura diretta di EECON2 rende un byte uguale a 0.
EECON1, invece, è un registro reale, nell' area
degli SFR, ed è dedicato al controllo delle operazioni di scrittura della
memoria riscrivibile (sia Flash che EEPROM).
ATTENZIONE:
Non va fatta confusione tra Memoria Programma, o memoria
FLASH, memoria EEPROM e memoria RAM, o memoria dati,
che sono elementi ben differenti della memoria del microcontroller.
La memoria RAM non conserva i dati in mancanza di tensione ed ha la
funzione di fornire registri di supporto temporanei alle operazioni logiche
e matematiche svolte dalle istruzioni che compongono il programma, durante
il suo svolgimento.
Flash e EEPROM sono entrambe cancellabili e riscrivibili e
conservano i dati contenuti in assenza di tensione di alimentazione,
ma:
- La Memoria Programma, in tecnologia Flash, è dedicata
a contenere il "programma".
- La Memoria EEPROM NON ha lo scopo di contenere
istruzioni, ma quello di conservare dati che vi vengono
scritti per salvaguardarli nel caso di mancanza di tensione.
|