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 analogico, se abilitata, sovrascrive una
eventuale assegnazione come uscita effettuata con il bit TRISGPIO,0.
Per disporre del pin come GPIO occorre disabilitare l' ingresso
analogico. |
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 T0CS = 1 il pin
agisce 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 |
IL foglio dati fornisce anche la tabella 5-2, relativa alle azioni da
compiere per avere disponibili gli I/O digitali:
In altre parole
per usare i pin come semplici GPIO occorre:
Pin |
Azione |
Dove |
SFR |
Bit |
GP0
|
disabilitare
l' ingresso
analogico |
da
programma |
ADCON0 |
ANS0 = 0 |
GP1 |
ANS1
= 1
|
GP2 |
disabilitare FOSC4
disabilitare T0CS
|
OSCCAL
OPTION
|
FOSC4
= 0
T0CS
= 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.
|