Order of precedence for pin function
Abbiamo visto che ogni pin
ha disponibili tre diverse funzioni. Se abbiamo qualche idea di come utilizzare quella
di I/O digitale, resta da chiarire come utilizzare le altre.
E in questo si celano alcune delle
difficoltà di base per l' utente che affronta per la prima volta questi
processori.
E queste difficoltà, delle piccole trappole poste sul percorso del
principiante, derivano tutte dalla linea guida citata prima, ovvero dalla
volontà del costruttore di assegnare ai default le condizioni di minimo
consumo energetico.
Il foglio dati da
una indicazione essenziale nella tabella 5-1
Come abbiamo visto, nonostante la semplicità dei moduli integrati, tutti i
pin possono assumere differenti funzioni, di cui quella di GPIO si trova al
livello di precedenza più basso.
Che cosa si intende con questo? Semplicemente che una determinata
configurazione dei registri sovra scrive un' altra a precedenza inferiore.
Questo può mettere in difficoltà chi voglia utilizzare un pin come semplice
I/O digitale. Vediamo in dettaglio.
Pin |
Possibilità |
GP0 |
La funzione di ingresso positivo del comparatore, applicata se il
comparatore è abilitato, sovrascrive una eventuale assegnazione come
uscita effettuata con il bit TRISGPIO,0.
Per disporre del pin come GPIO occorre disabilitare il comparatore. |
GP1 |
Situazione analoga a GP0. |
GP2 |
E' il pin più "complicato". Innanzitutto va detto che:
qualsiasi scelta tra le
possibili è annullata dall' aver abilitato l' uscita FOSC/4 in OSCCAL.
Solo se il bit 0 di OSCCAL è a 0,
sono possibili le altre opzioni:
- Se è abilitato il comparatore, il pin è comunque l' uscita COUT
- Se il comparatore è disabilitato, T0CS
= 1 rende il pin come ingresso T0CKI
- Per avere il pin sotto controllo di TRISGPIO,2
occorre che le condizioni precedenti siano disabilitate
|
GP3 |
Diventa automaticamente ingresso digitale se è stato impostato _MCLRE_OFF
nel CONFIG |
Quindi:
In sintesi, per usare i pin come semplici GPIO occorre:
Pin |
Azione |
Dove |
SFR |
Bit |
GP0 |
disabilitare
il comparatore |
da
programma |
COMCON0 |
b'11110001' |
GP1 |
GP2 |
disabilitare il
comparatore |
disabilitare
FOSC4 |
OSCCAL |
FOSC4, bit 0 = 0 |
disabilitare T0CS |
OPTION |
T0CS,
bit 5 = 0 |
GP3 |
disabilitare
MCLR |
da
CONFIG |
config_word |
_MCLRE_OFF |
|
Osserviamo che sono stati citati altri registri di controllo,
oltre ai già considerati TRIS e GPIO: vediamo a cosa servono.
|