Il Registro EECON1
Il registro EECON1
contiene vari bit di controllo per le operazioni su FLASH e EEPROM.
La scelta è dovuta al fatto che sia EEPROM che FLASH
richiedono un certo tempo per completare le operazioni di scrittura e la
scrittura, su entrambe le aree di memoria, è una operazione particolare e
che richiede una certa procedura.
.
EEECON1 |
bit |
EEPGD |
CFGS |
- |
FREE |
WRERR |
WREN |
WR |
RD |
funzione |
R/W |
R/W |
0 |
R/W |
R/W |
R/W |
R/W |
R/W |
CFGS
: accesso alla configurazione o ai registri
1 = accesso al configuration register
0 = accesso alla Flash o alla EEPROM
bit 5 non utlizzato - se
letto, riporta 0
bit 4 FREE
: Flash Row Erase Enable
1 = cancella la riga indrizzata da TBLPTR
0 = solo scrittura
bit
3
WRERR
: flag di errore
1 =
fase di scrittura terminata prima
del tempo
0 =
fase di scrittura completata
bit
2
WREN
:
bit abilitazione scrittura
1 =
scrittura abilitata
0 = scrittura disabilitata
bit
1 WR
: bit controllo
scrittura
1 = inizializza un ciclo di cancellazione/scrittura
0 = ciclo di
scrittura completato
bit
0
RD
:
bit controllo lettura
1 =
inizializza una lettura
0 =
non inizializza
Il bit EEPGD
determina se si vuole operare sulla FLASH o sulla EEPROM: se posto a 1, le
successive operazioni saranno dirette alla FLASH, altrimenti alla EEPROM.
Il bit CFGS
determina
se l' accesso è indirizzato al registro di configurazione/calibrazione
oppure alla memoria. Queste funzioni saranno dettagliate più avanti quando
si parlerà delle funzioni speciali del microcontroller.
Il bit FREE
se posto a 1 determina
l' inizio di una operazione di cancellazione della memoria programma che si
avierà col successivo comando WR. Se il bit è a 0 sono effettuate solo
operazioni di scrittura.
Il bit WREN
se posto a 1 determina
l' inizio di una operazione di scrittura (o cancellazione). Di conseguenza
il bit WRERR
verrà posto a 1 e azzerato dal timer interno quando l' operazione è
completata.
Questo flag sarà a 1 quando una operazione di scrittura risulterà
terminata prematuramente a causa di un reset o di un comando di
scrittura errato.
Il bit WRE
se posto a 1 determina
l' inizio di una operazione di scrittura (o cancellazione). Questo
bit può essere solo portato a 1 dal programma, ma non azzerato. Si azzera
da se quando l' operazione è completata.
Maggiori dettagli ed esempi di codice saranno dati più
avanti.
Table Pointer
Il TBLPTR punta una locazione di memoria programma su cui si
vuole operare.
Come detto più sopra, si tratta di un registro a 3 bytes, dato che sono
necessari 22 bit per indirizzare tutta l' area di memoria programma (2 MB).
I 22 bit permetto anche l' accesso all' User ID, al Device ID e ai bit di
CONFIG.
Il TBLPTR è utilizzato da alcune istruzioni specifiche per
l' accesso alla memoria programma:
-
TBLRD per la lettura
-
TBLWT per la scrittura
Queste istruzioni speciali hanno una sintassi "C like".
Istruzione |
Funzione |
TBLRD*
TBLWT* |
Legge la locazione puntata da TBLPTR |
TBLRD*+
TBLWT*+
|
Legge
la locazione puntata da TBLPTR.
TBLPTR è incrementato dopo l'operazione. |
TBLRD*-
TBLWT*-
|
Legge
la locazione puntata da TBLPTR.
TBLPTR è decrementato
dopo l'operazione. |
TBLRD+*
TBLWT+*
|
Legge
la locazione puntata da TBLPTR.
TBLPTR è incrementato
prima
dell'operazione. |
In lettura, tutti e 22 i bit di TBLPTR sono utilizzati per
puntare una locazione.
In scrittura i tre bit più bassi (TBLPTR2:0) determina
quale area (8 bytes) e i rimanenti, quale blocco.
Durante la cancellazione, TBLPTR21:6 puntano il blocco da 64 bytes che sarà
cancellato.
TBLPTRU contiene i bit da 21 a 16
TBLPTRH contiene i bit da 15 a 8
TBLPTRL contiene i bit da 7 a 0
Va notato che per i PIC con un massimo di 64 k di memoria
programma, TBLPTRU vale smpre 0 e può essere ignorato, mentre sarà necessario
considerarlo per PIC con più di 64 k o con espansione di memoria esterna.