Tutorials - PIC

 

PIC12F510 e 16F506


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 PIC12F510 e 16F506 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 il WDT
  • Determinare la modalità dell' oscillatore
  • Fissare la frequenza dell' oscillatore interno a 4 o 8 MHz

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.
_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-4MHz
_IntRC Oscillatore interno (frequenza determinata da _IOCFS)
_ExtRC Oscillatore esterno RC
_IOSCFS _OFF Oscillatore interno a 4 MHz
_ON 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.

 


 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 30/04/13.