Port B e i suoi registri
27 Gennaio 2019Esercitazioni Pratiche con PowerPoint
27 Gennaio 2019
Per cancellare in fase di programmazione un blocco di memoria (costituito da massimo 64 byte consecutivi) è necessario attenersi alla seguente procedura, mentre per questioni di sicurezza non è possibile cancellare i 48 byte di memoria riservati ai vettori di interrupt.
1. Settare il bit da cancellare, e cancellare il MASS bi nel registro di controllo della flash memory.
2. Scrivere un dato qualsiasi in una qualsiasi locazione di
memoria FLASH purché dentro il range da cancellare.
3. Aspettare per un tempo pari a Tnvs(10us).
4. Settare lHVEN bit.
5. Aspettare per un tempo pari a Terase(1ms).
6. Cancellare lERASE bit.
7. Aspettare per un tempo pari a Tnvh(5us).
8. Cancellare lHVEN bit.
9. Dopo un tempo pari a Trcv(1us) la memoria sarà nuovamente accessibile in lettura.
Le operazioni di programmazione e di cancellazione della memoria EEPROM non possono essere effettuate tramite codice di programma.
Cancell’azione di tutta la memoria EEPROM
Per cancellare tutti 4096 byte di memoria EEPROM bisogna attenersi alla seguente procedura:
1. Settare lERASE bit e il MASS bit contenuti nel registro
Flash Control.
2. Scrivere un dato qualsiasi in una qualsiasi locazione di
memoria FLASH.
3. Aspettare per un temo pari a Tnvs(10us).
4. Settare lHVEN bit.
5. Aspettare per un tempo pari a Terase(4ms).
6. Cancellare lERASE bit.
7. Aspettare per un tempo pari a Tnvh1(100us).
8. Cancellare lHVEN bit.
9. Dopo un tempo pari a Trcv(1us) la memoria sarà nuovamente accessibile in lettura.
Le operazioni di programmazione e di cancellazione della memoria EEPROM non possono essere effettuate tramite codice di programma.
Programmazione della memoria EEPROM
Per evitare errori nella programmazione conviene sempre prima cancellare il contenuto intero della memoria. La memoria viene programmata per line costituite da 32 bytes consecutivi per volta Attenersi alla seguente procedura per programmare la memoria EEPROM:
1. Settare il PGM bit contenuto nel registro FLASH Control che
abiliterà lo programmazione.
2. Scrivere un dato qualsiasi in una qualsiasi locazione di
memoria FLASH purché contenuto nel range della linea di
programmazione.
3. Aspettare per un tempo pari a Tnvs(10us).
4. Settare lHVEN bit.
5. Aspettare per un tempo pari a Tpgs(5us).
6. Scrivere i dati a partire dalla prima locazione della riga
che deve essere programmata.
7. Aspettare per un tempo pari a Tprog(30us).
8. Ripetere le fasi 6 e 7 finché tutti i dati della linea sono
stati inseriti.
9. Cancellare il PGM bit.
10. Aspettare per un tempo pari a Tnvh(5us).
11. Cancellare lHVEN bit.
12. Dopo un tempo pari a Trcv(1us) la memoria sarà accessibile
in lettura nuovamente.
Ripetere la sequenza fino a che non si ha finito di inserire il codice di programma intero.
NB: Il tempo che intercorre tra i passi 6-10 non deve superare il
Tempo massimo di programmazione Tprogmax.
Protezione della memoria EEPROM
Per evitare cancellazioni non intenzionali della memoria e quindi inevitabili perdite di dati esiste nellHC908 un registro di protezione denominato FLBPR (Flash Block Protect Register); in questo registro si andrà a scrivere il range della parte di memoria da proteggere. Scrivere al suo interno il primo indirizzo del blocco di dati da proteggere mentre la fine sarà posta automaticamente all’ultima locazione avente indirizzo $FFFF (compresi anche gli indirizzi dei vettori di interrupt).
Una volta protetta la memoria, lHVEN bit non sarà settabile dal codice di programma.
L’operazione può essere riassunta dalla seguente Flow-Chart:
Registro FLBPR (FLASH Block Protect Register)
Nel registro FLBPR si andrà ascrivere l’indirizzo iniziale del blocco di memoria da proteggere.
I bit utili al registo vanno dall’uno al sette, mentre il bit zero viene posto automaticamente a zero. Escl’uso quest’ultimo tutti gli altri bit sono sia di lettura che di scrittura. Qui di seguito alcuni esempi di protezione di blocchi di memoria: