Tips & Tricks - PIC

 

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?"



 

Copyright © afg . Tutti i diritti riservati.
Aggiornato il 24/05/18 .