Tutorials - PIC

 

PIC16F526


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.


 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 18/10/13.