Tips & Tricks - PIC18

 

Il problema del PORTB analogico nei PIC18.


Quando si utilizza per le prime volte un PIC18, ci si scontra normalmente con un problema tipico: quanto collegato su PORTB non va ! E si impiega lungo tempo per cercare di capire cosa diavolo ci sia di difettoso.
Sopratutto se si sta portando un semplice programma, ad esempio da un PIC16F876 a un PIC18F2321, che, a prima vista, sono del tutto pin compatibili.

Se non si è letta attentamente la documentazione del componente, è sfuggito il semplice (e perverso) fatto che, a differenza dei PIC16, i PIC18 possono utilizzare parte de PORTB come ingressi analogici.

Ed è questa configurazione è il default al reset.

Per cui, se non interveniamo, il chip all' avviamento presenta i pin RB3:0 come ingressi analogici. 
Questo ha per risultato l' impossibilità di utilizzarli correttamente come GPIO.

La soluzione, però, è molto semplice: conoscendo il problema, sarà immediato liberarsene.


Una prima via, quella consigliabile, è di agire durante la configurazione iniziale del chip.

Il bit 1 - PBADEN- del registro CONFIG3H agisce in questo modo :

  • PBADEN = 1  : PORTB<4:0> sono configurati come ingressi AD (default) al Reset)
    PBADEN = 0  : PORTB<4:0> sono GPIO al Reset

Se non servono ulteriori ingressi analogici, basta resettare il bit.
Ovviamente ce ne guardiamo bene dal toccarlo direttamente e lasciamo fare a MPLAB.

CONFIG  PBADEN = DIG

sarà la riga da aggiungere a quelle del CONFIG iniziale per predisporre i pin come digitali.

Poi, durante il funzionamento, sarà possibile programmarli come meglio si desidera, attraverso ADCON1.
La riga in CONFIG serve solo a modificare il default di questo registro al reset. 
Il suo opposto  è:.

CONFIG  PBADEN = ANA

 


Ed è appunto quella di agire su ADCON1 la seconda via possibile: da programma impostiamo in questo registro un valore tale da escludere dalla lista degli ingresi AD i PORTB.
Quindi, prima di usare questi port come digitali scriveremo :.

    movlw  0x0F
    movwf  ADCON1    ; nessun ingresso AD attivo

oppure un altro valore adeguato nei bit PCFG3:0 per abilitare solo gli AD desiderati.

Con una di queste due azioni, l' uso del PORTB e anche la compatibilità pin-to-pin tra 16 è 18 è assicurata

 


 

Copyright © afg . Tutti i diritti riservati.
Aggiornato il 01/09/12 .