Come collegare i pin non
utilizzati
|
I pin di I/O del microcontroller che non sono utilizzati dal progetto possono essere causa di problemi, catturando i
disturbi elettrici presenti attorno e nel circuito, sopratutto in montaggi
disordinati o in ambienti elettricamente rumorosi, come quelli industriali.
Ci si trova, quindi, con un circuito che funzionava in Laboratorio, ma poi, al
suo posto di lavoro esterno, si comporta in maniera bizzarra. In generale, sul banco del
Laboratorio, o con montaggi ben curati, è difficile che il problema si ponga; per cui, una volta provato,
si porta il circuito sul campo sicuri della riuscita, mentre invece ci
aspettano pessime sorprese: il sistema resetta a caso, si pianta, salta da un
punto all' altro del programma apparentemente senza senso.
Questo succede perchè tra la
situazione del laboratorio e quella di un possibile ambiente reale di funzionamento possono
esserci considerevoli differenze, dovute essenzialmente alla presenza sul campo di
fonti
di disturbo elettromagnetico (motori, relè, teleruttori, ecc.). Perchè
accade
questo? Bisogna ricordare che si tratta di dispositivi MOS, con elevate
impedenze di ingresso, con alte frequenze di lavoro e basse tensioni di
alimentazione, quindi assai
sensibili.
Se poi ai pin non utilizzati si trovano collegate lunghe piste di circuito
stampato o spezzoni di fili volanti, questi hanno la probabilità di diventare
antenne adatte a captare segnali elettromagnetici.
Dopo aver curato sia la parte di alimentazione, sia la realizzazione di un
montaggio e cablaggio ordinato del circuito, occorre ancora
verificare come si sono lasciati i pin non utilizzati, perchè è molto
probabile che attraverso questi si possano manifestare effetti inaspettati. La pratica sconsiglia vivamente di lasciare liberi (floating
-flottanti) ingressi di
componenti MOS/CMOS perchè, nelle condizioni peggiori, sono in grado di
funzionare da sensibili antenne per disturbi di ogni genere, anche di
frequenze radio, e creare situazioni di mal funzionamento assai difficili da
debuggare. Esistono diverse soluzioni che si posso applicare. Il concetto
base è quello di fornire al pin non usato una polarizzazione tale da
impedirgli di captare disturbi.
Si può risolvere il problema in diversi modi :
- Configurare i pin non
utilizzati come uscite,
In tal caso, avendo imposto un livello logico
definito,
possono essere lasciati floating.
Questa disposizione va benissimo sia per il prodotto finito, sia in fase
di debug, permettendo una immediata diversa destinazione dei pin,
che non sono collegati a nulla.
Bisogna evidentemente avere cura di non cortocircuitare
questi pin alla Vdd o alla Vss !
In ogni caso si raccomanda di collegare le uscite open drain alla
Vdd con un pull-up, onde evitare problemi di elettricità
statica.
- Collegare alla Vss i
pin non utilizzati, dopo averli configurati come ingressi
(che è il default
del reset) . Questo elimina qualsiasi problema di extra tensione o
carica statica (ESD) che possa coinvolgere il pin.
Va da se che, con i pin non usati collegati alla massa, è opportuno prestare molta attenzione a non
programmarli erroneamente come uscite , onde evitare un eccesso di corrente che
probabilmente distruggerebbe il port relativo!
Da valutare per applicazioni low power: con i pin a livello Vss il consumo è minimizzato
Questa situazione è applicabile anche per i pin a cui è attribuita una
funzione analogica, anche se è opportuno non avere pin analogici non
utilizzati.
Questa disposizione è adeguata per il prodotto finito, ma meno comoda
della precedente per il debug, in quanto occorre scollegare da massa un
pin per poterlo destinare diversamente.
- Collegare alla Vdd i
pin non utilizzati, dopo averli configurati come ingressi, attraverso un
pull-up.
Questa soluzione è meno protettiva del collegamento a massa, ma è più
pratica nel caso si stia sperimentando, perchè facilità
un diverso impiego dei pin senza separarli dalla massa come nel caso
precedente (ci si trova solamente con un pull-up in più, che,
solitamente, non da alcun fastidio). Anche se i pin sono configurati
erroneamente
come uscite avranno al massimo il carico del pull-up, che usualmente vale
alcuni kohm (4k7-100k, tipico 10 k).
Un problema di questa soluzione è l' aumento della corrente
richiesta dal circuito (per alimentare i pull-up) e quindi è meno
interessante della precedente per quello che riguarda progetti in cui il
basso consumo è fondamentale. Se avete intenzione di utilizzare pull-up o pull-down si deve scegliere un valore che non
consente a troppa corrente di fluire se il pin è impostato come una uscita, ad esempio utilizzandolo per una diagnostica
momentanea.
Soluzione consigliabile per il debug: i pin con pull-up possono essere
usati .immediatamente come ingressi senza modifiche al circuito stampato.
Altrettanto valida è l' azione di attivare i weak pull-up integrati,
dove disponibili, anche se questi, solitamente , hanno un valore ohmico
elevato.
Questa soluzione non ha alcun effetto se il disturbo EMI è di intensità tale da far apparire
sul pin un livello di tensione adeguatamente dannoso.
Questa situazione non è comunque consigliata per in pin configurati come
ingressi analogici, sia per il consumo del gate di ingresso, sia per la
possibilità di acquisire disturbi.
- Configurare i pin come ingressi
analogici (dove possibile) e collegarli ad una
tensione di riferimento.
- Impostare il pin come uscita, programmarlo a livello 0 e collegare il pin a GND.
Definito anche "virtual GND", è la migliore in assoluto per EMI, ma non tollera errori di qualsiasi tipo: ad esempio,
se si attiva l'uscita collegata al GND prima di impostare il valore basso, si rischia di danneggiare la porta.
Il corto causato programmando accidentalmente il pin come uscita con il valore opposto a quello hardware può non essere in
grado di danneggiare istantaneamente il buffer di uscita del pin, ma se protratto a lungo, le probabilità di danno
permanente aumentano grandemente. Questo genere di impostazione richiede che l'hardware sia costruito correttamente e non si presta molto alla sperimentazione. Però, impostare i pin inutilizzati come uscite genera problemi se c'è un errore di cablaggio o
di saldatura o se un pin viene collegato dove non dovrebbe. Tuttavia, se l'hardware è costruito correttamente, non c'è problema.
In aggiunta, si dovrebbero considerare le seguenti informazioni :
- I pin configurati come ingressi digitali possono anche essere collegati
alla Vdd o alla Vss senza resistenze, in quanto la corrente che fluisce è
solo quella di leakage del pin, in entrambi i casi. Le resistenze
usualmente utilizzate come pull-up o pull down hanno lo scopo di
proteggere il pin da eccessive correnti/tensioni, ma se l' alimentazione
è buona e non ci sono rischi di trovarsi con i pin configurati come
uscite, possono essere eliminate (anche se non è consigliabile).
- Un ingresso digitale consuma meno corrente quanto più la tensione è
vicina alla Vdd o alla Vss. Se si trova polarizzato attorno alla metà
della tensione di alimentazione, opera in una regione lineare e il consumo
è massimo.
- Gli ingressi analogici hanno una impedenza molto elevata e quindi
assorbono una corrente molto piccola. Essi consumano meno corrente degli
ingressi digitali. Quando un pin è configurato come analogico, il buffer
digitale è scollegato e questo riduce il consumo di corrente.
Da queste considerazione si comprende come mai il default al reset
configuri pin come ingressi AD.
- Lasciare pin floating può aumentare sensibilmente il consumo di corrente in
quanto gli stadi di ingresso commuteranno in sincronismo con il rumore
catturato, normalmente oscillazioni ad alta frequenza.
Esistono, poi, altri pin che possono avere una funzione specifica addizionale rispetto al semplice
GPIO:
- pin del reset
- pins dell' oscillatore esterno
- pin di alimentazione
Il pin del reset (MCLR per i PIC) ha questa funzione fissa in alcuni modelli, mentre in altri può essere assegnato ad un
ingresso digitale.
Se usiamo il pin come reset esterno, basta collegarlo ad un pull-up o a un circuito adeguato.
Se non serve un reset esterno, si può benissimo escludere questa funzione, attivando quella di input e trattare il pin come tale.
I pin dell' oscillatore esterno se sono configurati per questo scopo,
vanno collegati ai componenti previsti. Altrimenti basterà impostare dal
config un oscillatore interno e trattare i pin OSC1/OSC2 come normali GPIO.
I pin di alimentazione sono fonte di problemi solamente se il sistema di alimentazione è gravemente carente.
Solitamente un condensatore ceramico multistrato o un tantalio (0.1-10uF),
collegati quanto più vicino possibile al chip, sono sufficienti. Ovviamente, per
i componenti dotati di più pin di Vss e/o Vdd, TUTTI questi vanno
assolutamente collegati alle relative tensioni.
Va considerato, poi, che se il circuito ha l' alimentazione derivata dalla
rete e verso la quale c'è un basso isolamento o un accoppiamento capacitivo
(dispersioni, scarsa qualità dei componenti o del montaggio, deficienze di
isolamento, ecc.), si possono innescare fenomeni di circolazione di corrente nel momento in cui il componente viene toccato, chiudendo un circuito tra la terra, a cui il corpo umano è riferito, e la
rete, attraverso queste vie di dispersione del sistema di alimentazione.
Si tratta di effetti, detti ground loop, che si trovano più evidenti quando i segnali di ingresso e uscita della logica
non hanno un sufficiente isolamento dall' alimentazione o tra di loro. Questo genere di
fenomeni, casuali e difficili da diagnosticare, possono essere risolti con estrema semplicità ricorrendo
all' isolamento galvanico di ingressi e uscite attraverso opto isolatori o altri sistemi analoghi, curando la qualità del sistema di alimentazione
e della disposizione dei cavi che conducono i segnali di I/O.
In sostanza tutti i metodi vanno bene: dipende dalle circostanze la
scelta di uno piuttosto che dell'altro e dalla necessità di minimizzare il
consumo oppure no.
Quello che deve essere compreso
è che il prodotto finale non deve avere
pin floating.
Nè, tanto meno, tratti di circuito stampato, spezzoni di cavo e simili
collegati a pin non utilizzati: tutto questo non farebbe altro che fornire una
antenna da cui captare ancor più facilmente ogni genere di disturbo
elettromagnetico ed elettrostatico !
Quindi, la cosa esenziale è quella di evitare di trovarsi con pin floating e il
programmatore serio assegna una funzione precisa a tutti gli I/O del microcontroller, compresi quelli che l' applicazione non utilizza; in questo modo abbiamo
una sicura base di partenza, conoscendo le esatte condizioni di lavoro dell' hardware.
In ogni caso, il montaggio deve essere ordinato, senza fili sparpagliati e
collegamenti volanti, senza mescolare connettori di uscita e di ingresso e
dotando il tutto di un un buon alimentatore.
In particolare, se si ha a che fare con ingressi e uscite provenienti da
circuiti elettrici collegati alla rete, è opportuno:
- usare opto isolatori; il piccolo aumento di costo vale la grande
robustezza ai disturbi ottenuta
- disporre ingressi e uscite distanti tra loro per evitare
accoppiamenti
- non raccogliere in una sola matassa i collegamenti di ingressi e
uscite, anche se ben isolati; input e output, sopratutto se arrivano da
segnali remoti e/o di potenza, vanno separati.
Queste semplici norme , per lo più trascurate al di fuori dell' ambito
professionale, possono essere la soluzione di molti problemi di stabilità del
circuito. Quanto detto vale non solo per i PIC, ma per qualsiasi altro
microprocessore o microcontroller , in generale, per tutte le funzioni logiche
(TTL, CMOS, ecc).
In particolare:
- Curare le connessioni nei circuiti con logiche CMOS (CD, 74C,
74HC, operazionali con ingresso MOS, ecc) in quanto l' elevata impedenza
degli ingressi e l' elevata frequenza di lavoro possono far attivare
ingressi per accoppiamento capacitivo. Sono comuni i casi di
circuiti che funzionano (male) anche con un collegamento sullo stampato
interrotto o una saldatura difettosa, solo per via capacitiva o che sono sensibili all' avvicinarsi
della mano, sintomo chiaro di un effetto del genere Thereminoforo, in cui
un pin non collegato funge da antenna.
- Nel caso di componenti ad alta frequenza o radio frequenza
occorrerà utilizzare tutte le risorse relative a questo genere di
circuiti, compresa una adeguata schermatura
- Un pin indicato come NC (Not Connected, Non Connesso) dovrebbe
essere un pin che internamente non è collegato a nessuna parte del
circuito integrato. Pertanto non richiede alcuna connessione.
Questo, però, può non essere vero per molti IC, in cui l' indicazione NC
si riferisce solamente al fatto che l' utente non deve utilizzare il
pin; in effetti il pin è collegato internamente al circuito integrato
e questa connessione è usata dal costruttore a scopo di test.
Quindi, in generale, i pin NC non vanno collegati a nulla, neppure
al gnd.
- Componenti discreti in package multipli (transistor multipli, FET duali,
didoi multipli e simili), dove sia usata solo una parte del set, possono
avere gli elettrodi collegati al gnd per evitare problemi da
elettricità statica sui terminali non utilizzati.
- E' consigliabile utilizzare una resistenza di pull-up o down per
ogni pin e non collegare più pin alla stessa resistenza: la connessione
di pin in comune, con caratteristiche differenti, potrebbe essere causa di
problemi.
|