Il CONFIG
Un microcontroller embedded è progettato per svolgere un consistente numero di funzioni concentrate in un solo
chip ed è questa la ragione del suo successo.
La concentrazione di possibilità potenziali deve però prevedere un qualche
sistema per definire quali di queste opzioni debbano essere usate. Ed alcune
di esse necessitano una configurazione PRIMA dell' avvio del programma.
Quanto abbiamo visto finora in relazione ai registri di controllo delle
funzioni interne riguarda operazioni che devono venire effettuate durante l'
esecuzione del programma, a discrezione dell' utilizzatore. Ma ci sono altre
variabili nelle mani dell' utilizzatore, variabile che modificano in modo
sensibile la struttura hardware del microcontroller e che vanno decise al di
fuori dell' esecuzione del programma.
Questa azione di definisce CONFIGURAZIONE e fa capo ad un Registro di
Configurazione (Configuration Word) che si trova in memoria Flash, ma non è
accessibile se non durante la fase di programmazione del chip.
Per il nostro PIC12F519 il Registro di Configurazione consente di
scegliere le seguenti opzioni:
- Abilitare o meno la funzione di MCLR sul pin GP3/MCLR
- Abilitare o meno la protezione da rilettura del codice scritto nella
memoria programma
- Abilitare o meno la protezione della Flash dati
- Abilitare o meno il WDT
- Determinare la modalità dell' oscillatore
- Determinare la frequenza dell' oscillatore interno
Il Registro di Configurazione, facendo parte della
Flash, mantiene la programmazione ricevuta fino ad una successiva.
Quando cancellato,
assume per ogni bit il valore 1 e questo corrisponde ad una delle selezioni
sopra indicate. E' evidente che il default ha poche probabilità di essere
corrispondente a quanto avete bisogno per la vostra applicazione. Quindi
occorre determinare come si desidera configurare l' hardware disponibile.
Per semplificare le cose, i compilatori accettano sia forme numeriche che
simboliche per questa azione di configurazione e offrono una serie di label
che facilitano il lavoro.
Certamente c'è anche la possibilità di dichiarare bit per bit il contenuto del
registro, ma questa pratica è fortemente condannabile in quanto non permette
una chiara identificazione di cosa si sta realmente facendo, oltre al fatto
che occorre disporre del foglio dati e conoscere la posizione del registro e
la funzione di ogni bit. Se questo è ancora possibile per un PIC semplice
come quello in uso, altri più complessi, come i PIC18, dispongono non di uno,
ma di molti registri di configurazione e l' uso di valori assoluti al posto
delle funzionali label diventa improponibile. Quindi, qui, non facciamo
neppure cenno alla situazione del Registro di Configurazione, ma solo ai
simboli necessari per maneggiarlo.
Vediamo in dettaglio le possibilità:
bit |
opzioni |
Funzione |
_MCLRE |
_ON |
Il pin GP3/MCLR è utilizzato come MCLR
Il pin 8 assume la funzione di reset esterno. Questo permette che sia
applicato dall' esterno un livello di tensione basso che resetta il
microcontroller. |
_OFF |
Il pin GP3/MCLR è utilizzato come GP3.
Il pin 8 assume automaticamente la funzione di ingresso digitale GP3. |
_CP |
_ON |
La protezione da rilettura del codice scritto nella memoria
programma è attiva.
In questo modo i codici scritti a partire dall' indirizzo 40h
saranno protetti da rilettura.
I primi 64 bytes della memoria programma e il valore della
calibrazione dell' oscillatore interno sono comunque esclusi dalla
protezione. |
_OFF |
La protezione da rilettura del codice scritto nella memoria
programma è disabilitata.
Tutta l' area della memoria programma è leggibile. |
_CPDF |
_ON |
Protezione Flash dati attivata |
_OFF |
Protezione Flash dati disattivata |
_WDTE |
_ON |
WDT è attivato.
Se si attiva il watchdog occorre disporre nel programma la sua
gestione, in quanto l' overflow genera un reset. |
_OFF |
WDT è disabilitato |
_OSC |
_LP |
Oscillatore esterno low power (cristalli 32-200 KHz) |
_XT |
Oscillatore esterno 1-8MHz |
_IntRC |
Oscillatore interno (frequenza determinata da _IOCFS) |
_ExtRC |
Oscillatore esterno RC |
_IOSCFS |
_4MHz |
Oscillatore interno a 4 MHz |
_8MHz |
Oscillatore interno a 8 MHz |
Per consentire la portabilità del codice, i dati necessari per la
ConfigurationWord vanno definiti nel sorgente in modo che il
compilatore (Assembly, C o altro) provveda automaticamente a generare il file
.hex che li contiene.
Se le informazioni della Configuration Word non sono presenti nel file .hex, il
software di gestione dei tools di programmazione di Microchip provvede ad
indicare la situazione con un messaggio di warning.
E' sempre possibile inserire questi dati nell' ambiente di sviluppo o dal
dispositivo di programmazione, ma la procedura è vivamente sconsigliata in
quanto verrebbe a mancare un dato chiave della documentazione. |
Per informazioni generali sul CONFIG, click qui.
Gli ID
Fanno parte dell'area della Configuration Word anche quattro
locazioni di memoria, chiamati ID, dove l'utente può memorizzare
codici di identificazione, checksum o altro.
Queste posizioni NON sono
accessibili durante l'esecuzione del programma, ma sono leggibili e
scrivibili nella fase di programmazione della memoria. Si utilizzano solo i 4
bit inferiori degli ID e 4 bit alti vanno messi a 1, dato che non sono
implementati.
Questi bytes possono essere letti indipendentemente dall'impostazione del bit _CP
di protezione della memoria.
|