15 preconcetti sui PIC...
|
... e sui microcontroller in generale.
15 punti da considerare.
1 - La tensione di alimentazione del PIC è
di 5V stabilizzati...
FALSO.
Sarebbe meglio dire: "La tensione di alimentazione può essere
5V..." in quanto i PIC, e i microcontroller in generale, sono alimentabili in una ampia gamma
di tensioni, solitamente tra tra 2 e 5.5V.
Fanno eccezione modelli specifici, ad esempio gli LF, che hanno una tensione
massima inferiore a 5V (tip. 3.6V); in ogni caso, il dato è ben visibile sul foglio dati.
E neppure questa tensione deve essere stabilizzata: un progetto generico potrà funzionare
tanto alimentato dalla rete con il solito 7805, quanto con una cella LiIon o due
batterie alcaline da 1.5V.
Su cosa influisce la tensione di alimentazione, allora?
Se parliamo del solo chip, i limiti che possiamo vedere sono due:
a. - molti chip possono funzionare in un range di clock molto ampio, però è
comune che minore è la tensione di alimentazione, minore è il massimo clock
possibile. Ad esempio, potrà essere garantito il funzionamento con clock di
4MHz per tutto il range di alimentazione ammesso, ma un clock di 20MHz sarà
garantito solo se la Vdd è 5V
b. - il secondo punto riguarda l'impiego della Vdd come tensione di
riferimento della conversione AD.
E' evidente che nei modelli in cui non c'è
possibilità di utilizzare una Vref esterna, la Vdd è l'unica possibilità. In
questo caso la tensione di alimentazione influenza il risultato della conversione.
Però, più che il suo valore assoluto conta la sua stabilità.
Possiamo calibrare il risultato della conversione per diversi valori di Vdd, ma
non è possibile ammettere una Vdd che varia durante il funzionamento. Quindi, l'uso
del modulo ADC richiede o una Vdd stabile o la presenza di una Vref esterna.
Se consideriamo quanto è collegato all'esterno, la tensione di alimentazione
può influire:
a. - nel caso di carichi alimentati dagli I/O. Per un LED, la resistenza di
limitazione della corrente dovrà essere calcolata in base alla Vdd ed alla
corrente che si vuole fare scorrere nel LED. Oltre a questo, va
considerato che non sarà possibile azionare un carico con una tensione
inferiore a quella necessaria: un relè da 5V nominali probabilmente non
funzionerà se la la Vdd scende a 3V e un LED con Vf=4.2V non si accenderà se
la Vdd è 2V.
b.- al chip sono collegate logiche in uscita o in ingresso che hanno una
determinata tensione di funzionamento. Ad esempio, se utilizzo un clock esterno
TTL, anche il microcontroller dovrà avere 5V di alimentazione. Però, se uso
una sorgente di clock a 3.3V, occorrerà che anche il micro sia alimentato da
questa tensione o sia interposto un adattatore di livello.
2 - Il reset va collegato ad una resistenza di pull-up da 10k...
FALSO.
Questo è necessario solamente per quei chip obsoleti che non hanno la
possibilità di impiegare il pin MCLR come I/O digitale (funzione selezionabile
dal config iniziale).
Tutti gli altri possono benissimo farne a meno, configurando il pin come I/O.
Il pin MCLR non
influisce minimamente sulla logica di reset, che è interamente integrata: il
suo scopo è quello di resettare il micro con un comando
esterno (sincronismo con altri circuiti, voltage detector, ecc.).
Anche il valore 10k è indicativo. Valori di 1k o 22k vanno bene ugualmente.
In particolare, alcuni chip dispongono di un pull-up integrato che viene
abilitato automaticamente se il pin MCLR è abilitato e un resistore esterno non è neppure richiesto.
3 - Tutti i circuiti hanno il tasto di reset...
FALSO.
A cosa servirebbe? Un circuito a microcontroller non è un
PC con un s.o. di Microsoft, dove le schermate blu o i blocchi sono all'ordine del
giorno.
Un sistema elettronico, sopratutto se dedicato al controllo di un
processo, ad una automazione, ad un servizio, deve funzionare sempre. Vi immaginate il micro che comanda la vostra lavatrice che abbia il pulsante
del reset perchè vi pianta il lavaggio a metà?
Perfino nei PC desktop come già da tempo per i
notebook, c'è la tendenza ad eliminare il tasto del reset, che non presenta
alcuna utilità pratica, visto il lieve miglioramento della stabilità degli
ultimi sistemi operativi...
Per quale motivo
avete la necessità di resettare il micro?
-
O perchè il firmware che avete scritto fa
schifo e va in palla
- o perchè c'è la possibilità che vada in palla a causa di eventi
esterni.
Il primo caso si eviterà facendo fare al programma quello che deve e
debuggandolo seriamente. Il secondo, prendendo tutte le necessarie misure
hardware e software per parare i possibili problemi.
Se volete, il pulsante reset lo mettete, ma solo se ha una qualche funzione,
ad esempio durante il debug o per didattica e non semplicemente perchè c'è in tanti schemi sul
web...
Altre
informazioni le trovate qui. e qui.
4 - Il clock usa un quarzo...
FALSO.
Se avete bisogno della precisione del quarzo, sì, altrimenti non serve.
Tutti i chip
attuali hanno oscillatore interno e non richiedono cristalli esterni se non è
richiesta una precisione maggiore dell'1% (in alcuni Enhanced 0.5%). In effetti, il clock
interno, sopratutto nei componenti più recenti, ha una precisione adeguata per
la maggior parte delle applicazioni, compresi i timing di trasmissioni seriali.
Solamente vecchi chip obsoleti non disponevano di oscillatore integrato e quindi
erano necessari componenti esterni.
Si userà un cristallo o un oscillatore o un clock esterni quando i timing dell'
applicazione sono critici, principalmente in funzione delle variazioni di
temperatura e tensione.
5 - Il PIC funziona a 4MHz...
FALSO.
Il fatto che chip obsoleti avessero la possibilità di funzionare fino a
4MHz e che il web sia pieno di esempi che lavorano a questa frequenza, non
vuol dire che essa sia un obbligo, come non lo è il quarzo esterno.
Infatti, tutti i chip
attuali hanno oscillatore interno con 8 o più frequenze selezionabili e, in
ogni caso, anche usando circuiti di clock esterno, non c'è alcuna ragione di
limitarli a 4MHz.
La scelta della frequenza dipenderà dalle necessità dell'applicazione.
Frequenze maggiori saranno usate dove occorro temporizzazioni particolari o è
necessario ridurre al minimo il ciclo di istruzione per aumentare la potenza
di calcolo o seguire I/O complessi, trasmissioni seriali, ecc..
Si potrà osservare che una gran quantità di applicazioni non critiche
possono funzionare tranquillamente con frequenze molto minori di 4MHz, anche
solo 31kHz.
La scelta di una frequenza più bassa fa si che il consumo di corrente sia
ridotto, risparmiando energia e perdite in calore.
6 - I PIC possono comandare direttamente
carichi da 25mA...
FALSO.
25mA è la massima corrente erogabile da un pin per il chip alimentato a
5V. Se la tensione Vdd è minore, anche la corrente al pin scenderà. Basta
osservare i grafici nella sezione delle specifiche elettriche dei fogli dati,
dove è in relazione la tensione di alimentazione con la massima corrente al
pin.
Inoltre, alcuni nuovi chip possono comandare correnti di 50 o 100mA su
alcuni pin specifici.
In ogni caso, esiste un limite di corrente complessiva nell'alimentazione
del chip. Se occorre più corrente al carico, inserite un buffer.
7 - Con un chip a 40 pin posso accendere almeno 25 LED da 20mA
caduno...
FALSO.
I port hanno un massimo di 25mA, ma questo non vuol dire che tutti assieme
possono condurre questa corrente.
Questo perchè i chip hanno anche un limite massimo di corrente complessivo, che
si aggira attorno ai 300mA: 25 LED da 20mA ciascuno, fa 500mA, ben oltre quanto
supportato. Il chip si sovra riscalderebbe, con possibilità di guasto.
8 - Meno componenti uso, meglio è...
FALSO.
Certamente un microcontroller integra un gran numero di funzioni, per cui è
possibile che la richiesta di hardware esterno sia molto bassa. Da qui la corsa
al "progetto" che usa meno componenti, anche se questi sono necessari
o anche solo utili. Però, questo non è la stessa cosa dell'eliminazione di
componenti esterni che invece sono indispensabili.
Ne è esempio più comune la
sciocca idea di abolire le resistenze in serie ai LED ritenendo di poter
compensare l'effetto dell'extra corrente con una modulazione software del port.
9 - Non servono resistenze in serie ai LED,
perchè regolo da software la corrente...
FALSO.
Si tratta di una bestialità purtroppo molto comune in rete.
Attraverso il software possiamo ridurre la potenza trasmessa al LED con un
PWM, ma possiamo ridurre la corrente di picco che lo attraversa.
Se stiamo comandando dal pin un LED verso la Vss, con una Vdd =5V, e senza la
resistenza di caduta in serie, la tensione al pin sarà quella di conduzione del
LED, tra 1.7V e 2.3V circa, a seconda del colore del LED. Ciò significa che il
MOSFET all'interno del port deve accollarsi una caduta di tensione da 2.7v a 3.3v.
Se anche la corrente fosse solo il massimo di targa, ovvero 25mA, la potenza
dissipata nel port è superiore a quello che il produttore specifica (in condizioni normali la caduta di tensione sul MOSFET del port è di 0.5-06V,
che con 25mA produce una dissipazione di 12-15mW).
Inoltre, il chip è stato progettato per 25mA da ogni uscita, ma non dispone di
"limitatori di corrente".
Senza resistenza di limitazione, la corrente erogata sarà 33-35mA mediamente.
Per quanto parzializziamo la fase di on per ridurre il tempo di conduzione e
quindi la potenza dissipata , si tratta sempre di 50-100mW, che è ben più del
massimo ammissibile. La vita del chip è fortemente a rischio.
L'applicazione della sovra potenza su un pin per breve tempo consente al
chip di raffreddarsi, ma se i pin usati sono più di uno, come capita comandando display,
il problema del tempo per il raffreddamento si complica.
Se poi, durante il debug, come capita, il multiplex è arrestato e abbiamo pin in conduzione continua
con una forte sovra corrente che permane per un certo tempo, è probabile un danno al chip.
Altre
informazioni le trovate qui.
10 - Se non ho pin a sufficienza, ne aumento il numero usando componenti
esterni...
DECISIONE NON SEMPRE ADEGUATA.
A volte è possibile che questo sia un principio valido, ad esempio per
questioni topografiche, di collegamenti o di espandibilità su bus genere
I2C.
Aggiungere shift register o port expansion richiede componenti, spazio
sullo stampato, maggiori complicazioni software. Un chip con un numero
maggiore di pin è molto più economico e funzionale.
11 - Ho un chip, scriverò il software per
quello...
DECISIONE NON SEMPRE ADEGUATA.
Anzi, in generale è l'approccio peggiore. Se il chip non dispone delle risorse
richieste dall'applicazione è forse possibile emularle attraverso il
software, ma è una scelta penalizzante per l'extra tempo necessario.
L'approccio corretto è quello di definire prima le necessità dell'
applicazione, poi selezionare il chip che meglio si presta a supportarle.
12 - Si
può distruggere il chip con una divisione per 0...
FALSO.
E' una sciocchezza distribuita in rete con filmati taroccati: solo chi non
ha idea di come funzioni un circuito a microcontroller può riterla vera. Non esiste
modo di bruciare un chip senza alcun circuito esterno collegato, solo per
l'esecuzione di un loop software infinito.
Peraltro, tutti i programmi sono loop che girano fino a che il circuito è
alimentato...
13 - Lasciare a caso pin non utilizzati non ha
importanza.
FALSO.
E' normale che si arrivi al risultato finale senza aver usato tutti i pin
disponibili.
Nei PIC, se un pin non viene usato, il default lo ha impostato come ingresso. Essenzialmente, l'ingresso
è una condizione ad alta impedenza che può captare con facilità disturbi
esterni imprevedibile, sopratutto, pericolose tensioni ESD.
Non ci sono problemi, solitamente, se si utilizza il chip per esperimenti in
laboratori, ma la cosa è diversa se si tratta di una applicazione che va in
ambiente esterno.
La soluzione è semplice: la maggior parte dei micro ha pull-up interni (weak
pull-up); attivandoli, si impone una tensione al pin che riduce il problema.
Oppure si potranno configurare come uscite (facendo attenzione a non
collegarli alle alimentazioni).
Altre
informazioni le trovate qui.
14 - I PIC si possono maneggiare senza
problemi...
FALSO.
Normalmente sono chip piuttosto robusti e protetti contro tensioni ESD non
eccessive. Se però si ha a che fare con tensione elettrostatica
elevata, anche i PIC muoiono.
Ne deriva che è meglio trattarli con un minimo di cautele.
15 - Basta leggere il foglio dati...
SCELTA NON SUFFICIENTE.
Non sufficiente nel senso che, se la lettura del foglio dati è indispensabile
per conoscere il componente e le sue possibilità di impiego, è altrettanto
necessario leggere i documenti di Silicon Errata che sono presenti sul sito di
Microchip. In pratica, può capitare che un chip appena prodotto sia affetto
da bug hardware. In generale si tratta di problemi con cui raramente ci si
scontra, ma quando si incoccia in questi, senza le necessarie informazioni, ci
si trova in grosse difficoltà.
Dunque, osservate se nel set della documentazione disponibile sono compresi
dei Silicon Errata e verificate se i bug descritti vanno a influenzare la
vostra applicazione.
Da tenere presente che questi bug interessano normalmente solo le prime
versioni del chip e che, utilizzando una versione più recente, sono stati
normalmente corretti dal costruttore.
Può anche interessarvi: "Come
distruggo il PIC?"
|