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 fornisce una indicazione essenziale:
Numerosi pin sono utilizzati per diverse funzioni.
Alcune, come quelle del modulo ADC e dei comparatori, sono
abilitate dai default al POR.
In queste condizioni, dopo un RESET, le funzioni digitali di questi
pin sono accessibili solamente dopo aver disabilitato da programma
quelle analogiche.
Per altri pin, invece, le assegnazioni di funzione sono da
effettuare nella configurazione.
Se non si curano questi particolari, l' applicazione non potrà
funzionare.
|
Questa è una "trappola" in cui cade il principiante o chi si
accinge ad usare per la prima volta questo chip. Se la funzione di ingresso al
timer,
che è prioritaria per i default, non viene disattivata, non è possibile accedere a
quelle digitali e il LED collegato al pin resterà ostinatamente spento !
Raccogliamo nella seguente tabella le possibili funzioni dei vari pin:
pin |
digitale |
ADC |
comparatori |
extra |
RB0 |
I/O |
AN0 |
C1IN+ |
ICSPDAT |
RB1 |
I/O |
AN1 |
C1IN- |
ICSPCLK |
RB2 |
I/O |
AN2 |
C1OUT |
- |
RB3 |
I |
- |
- |
MCLR/Vpp |
RB4 |
I/O |
- |
- |
OSC2/CLKOUT |
RB5 |
I/O |
- |
- |
OSC1/CLKIN |
RC0 |
I/O |
- |
C2IN+ |
- |
RC1 |
I/O |
- |
C2IN- |
- |
RC2 |
I/O |
- |
CVref |
- |
RC3 |
I/O |
- |
- |
- |
RC4 |
I/O |
- |
C2OUT |
- |
RC5 |
I/O |
- |
- |
T0CKI |
Per poter disporre delle funzioni digitali, occorre:
- che nella configurazioni vengano assegnate le giuste condizioni
- e che, dopo il reset, che il programma disabiliti le funzioni analogiche
non richieste
Quindi:
In sintesi, per usare i pin come semplici IO occorre:
Pin |
Azione |
Dove |
SFR |
Bit |
RB0 |
disabilitare AN0
disabilitare comparatore 1 |
da
programma |
ADCON0
CM1CON0 |
ANS1:0 =
00/01
C1ON = 0 |
RB1 |
ANS1:0 =
00/01/10
C1ON = 0 |
RB2 |
ANS1:0 = 00
C1ON = 0 |
RB3 |
disabilitare
MCLR |
da
CONFIG |
config_word |
_MCLRE_OFF |
RB4 |
disabilitare CLKOUT |
opzione _RB4 |
RB5 |
impostare l' oscillatore interno |
_OSC_IntRC |
RC0 |
disabilitare comparatore 2 |
da
programma |
CM2CON0 |
C2ON = 0 |
RC1 |
disabilitare comparatore 2 |
C2ON = 0 |
RC2 |
disabilitare CVref |
da
programma |
CVREF |
VREN = 0 |
RC3 |
- |
- |
- |
- |
RC4 |
disabilitare comparatore 2 |
da
programma |
CM2CON0 |
C2ON = 0 |
RC5 |
impostare l' oscillatore interno
come sorgente di TMR0 |
da
programma |
OPTION |
T0CS
= 0 |
|
Come si vede, tutti i pin ad eccezione di RC3,
prevedono una qualche manovra obbligatoria se si vogliono utilizzare come
semplici I/O digitali.
Ovviamente la destinazione dei pin dipenderà dal programma da eseguire ed
possibile che siano richieste combinazioni come comparatore attivato, ma senza
uscita su pin oppure oscillatore interno con uscita su pin del clock, ecc. Da
programma o da CONFIG occorrerà agire sui bit dedicati per modificare le
assegnazioni.
Si ricorda che quanto assegnato in CONFIG non è modificabile da programma
e riveste particolare importanza nella selezione del modo di oscillatore, che
deve essere adatto all' hardware implementato.
Una indicazione particolare può essere fatta a riguardo dei pin dell' ISCP
(ICSPCLK, ICSPDAT, Vpp): queste funzioni sono attivate automaticamente all'
atto della programmazione del chip e non comportano alcuna azione da parte
dell' utente. E', invece, necessario il rispetto delle specifiche richieste
dalla connessione ICSP.
Vediamo come controllare le altre funzioni disponibili.
|