Stressiamo un microcontrollore PIC

01

I datasheet di tutti i componenti elettronici, tra i quali anche i microcontrollori PIC, pubblicano gli Absolute Maximum Rating (detti anche LIMITING VALUES) che dettano i valori massimi di corrente, tensione, frequenza, temperatura o altri, da non superare assolutamente, pena la distruzione del componente. Vediamo fino a che punto possiamo oltrepassare il limite dei parametri, stressando il PIC al massimo!

Spesso è divertente e didattico scoprire sino a che punto i componenti elettronici possono essere "tirati". In questo articolo eseguiremo alcuni esperimenti per valutare i limiti reali dei microcontrollori PIC, superati i quali avviene la reale distruzione del componente. Per le nostre prove utilizziamo una vetusta MCU 16F84/04, prodotta dalla Microchip, sia per la semplicità delle operazioni sia per il costo contenuto del componente. Ovviamente, chi lo desiderasse, può effettuare i test su altri microcontrollori, anche di fascia più alta, con tutte le conseguenze del caso...

Le sfide che ci accingiamo ad effettuare non cambieranno di certo il mondo dell'elettronica. Del resto, ottenere una velocità operativa di 7 MHz da un controllore da 4 MHz, non fa tanta differenza, se paragonata alle impressionanti performances di prodotti di livello superiore. Oppure, "tirare" 30 mA invece di 20 mA, non ci cambia la vita, basterebbe infatti aggiungere un transistor di potenza per ottenere molto di più.

Lo spirito dell'articolo è solamente quello di scoprire il reale limite di funzionamento del componente, una semplice curiosità che, ovviamente, non avrà risvolti pratici importanti. Del resto, far funzionare un microcontrollore al di sopra delle sue possibilità, implica una drastica riduzione della vita operativa dello stesso.

Absolute Maximum Ratings

A pag. 49 del datasheet ufficiale del PIC 16F84, sono elencati i parametri massimi da non superare assolutamente. Del resto, una nota a piè di pagina, evidenziata in grigio, riporta quanto segue:

 

† NOTICE: Stresses above those listed under "Absolute Maximum Ratings" may cause permanent damage to the device. This is a stress rating only and functional operation of the device at those or any other conditions above those indicated in the operation listings of this specification is not implied. Exposure to maximum rating conditions for extended periods may affect device reliability.
La traduzione, a grandi linee,  afferma che: il superamento dei limiti descritti in "Absolute Maximum Ratings" può causare danni permanenti al dispositivo. I parametri di stress sono solo di riferimento. Il funzionamento a valori non corretti rendono il dispositivo non affidabile.
Alcuni valori interessanti, da non superare, sono i seguenti:
  • Temperatura ambiente: -55°C to +125°C;
  • Tensione VDD rispetto a VSS: da -0.3 a +7.5V;
  • Dissipazione massima: 800 mW;
  • Massima corrente sul pin Vss: 150 mA;
  • Massima corrente sul pin Vdd: 100 mA;
  • Massima corrente su ogni singolo piedino di I/O: 25 mA;
  • Massima corrente erogata dalla PORT-A: 50 mA;
  • Massima corrente erogata dalla PORT-B: 100 mA.

Ovviamente, altri tipi di microcontrollori hanno caratteristiche diverse. Per calcolare il valore della dissipazione occorre sommare le potenze parziali, usando la seguente formula:

Pdis = VDD x {IDD - ∑ IOH} + ∑ {(VDD-VOH) x IOH} + ∑(VOl x IOL).

Per quanto riguarda la frequenza massima, il dispositivo, seppur sopportando un limite di 4 MHz, può operare anche a frequenza leggermente maggiore, come attestato anche dai datasheet, secondo il grafico e la formula sottostanti:

Per quanto riguarda la corrente erogata da ogni singolo pin, il massimo valore misurato sulla PORTB.0 è stato di 30mA, controllato attraverso un amperometro. Il PIC, in ogni caso, non tollera più di 100 mA. Del resto, anche un esagerato assorbimento di corrente sarà limitato da una corrispondente caduta di tensione.

 

Velocità massima della MCU e overclock

Per questo esperimento, come detto prima, utilizzeremo un PIC di fascia molto bassa, il vetusto PIC 16F84A-04/P, certificato per funzionare alla velocità di 4 MHz.

Si vuole provare fino a che punto possiamo "tirare" l'acceleratore del microcontrollore. Lo schema, molto semplice, prevede l'utilizzo di 8 diodi Led, collegati ad altrettante porte di I/O della PORT-B. Alla frequenza base, di 4 MHz, le luci devono lampeggiare al ritmo di 1 secondo. Di seguito è illustrato lo schema elettrico e il listato del firmware.

program x01_lampeggio_led
main:
trisb=0
portb=0
while true
      portb=255
      delay_ms(500)
      portb=0
      delay_ms(500)
wend
end.

Bene, dopo aver allestito lo schema elettrico e compilato il firmware per una velocità operativa di 4 MHz, e dopo aver programmato il micro con il file .HEX finale, si può dare tensione al circuito. I diodi LED lampeggiano ad una frequenza di 1 secondo. Senza voler subito passare alla frequenza massima, che toglierebbe il gusto all'intero esperimento, si passino in rassegna gli altri quarzi, con un po' di suspance.

Si monti, al posto del presente, il cristallo da 6 MHz: con grande soddisfazione i LED lampeggiano ad un ritmo leggermente maggiore.

Passiamo quindi al quarzo da 10 MHz, un po' increduli... i diodi lampeggiano ancor più velocemente. Una sensazione bellissima, di grande soddisfazione.

Ci spingiamo ancora oltre. Proviamo un quarzo da 14 MHz... funziona ancora, sempre più veloce. Un dubbio comincia a prender piede: siamo sicuri di aver utilizzato il PIC 16F84/04 oppure, per sbaglio, si è montato il fratello maggiore, il 16F84/20 ? Dopo un rapido controllo, il respiro di sollievo: si tratta del modello a 4 MHz.

Ok, saliamo ancora di frequenza, il cuore palpita e, con esso, il PIC. Installiamo il cristallo da 20 MHz. Sbalorditivo, funziona ancora, i LED lampeggiano vorticosamente 5 volte più velocemente. L'unica differenza è stata in fase di programmazione che, per tagli maggiori di 10 MHz, deve essere effettuata in modalità HS e non XT. Controlliamo la temperatura della MCU: fredda! Se avessimo overcloccato una CPU di un computer (es: da 1800 MHz a 9000 MHz, a quest'ora si sarebbe fusa...).

Ormai, presi dall'euforia, vogliamo esagerare. E' una questione di principio. Montiamo un quarzo da 26.996 MHz (in pratica 27 MHz)... da non credersi, i Led lampeggiano ancor più velocemente. La bontà della misura è testimoniata da un frequenzimetro digitale, che afferma la correttezza e la proporzionalità dell'incremento. Le sorprese non finiscono qui: un quarzo da 30.875 MHz continua a far oscillare correttamente il PIC, aumentando correttamente e proporzionalmente la frequenza di lampeggio.

Un eccessivo overclock non pregiudica la salute del PIC e non lo distrugge. Al massimo potrebbe operare con velocità non previste o bloccare la propria oscillazione. Non è, quindi, una operazione pericolosa come potrebbe esserla per i Personal Computer.

L'unico problema riscontrato è stato utilizzando un quarzo da 29,7 MHz; con esso, la frequenza decadeva drasticamente.

Concludendo, il programma scritto in mikroBasic, con un quarzo da 4 Mhz ha generato degli impulsi di 1 secondo (1 Hz), mentre con un quarzo da 30.875 MHz è riuscito a produrre un treno di impulsi di 7.7 Hz. L'incremento di velocità, straordinario, è stato di ben 7.7 volte. L'affidabilità è stata altissima e non si sono riscontrati problemi di sorta. Anche la temperatura della MCU non ha subito incrementi.

A cosa può servire un overclock?

A parte la fame di velocità e di avere il prototipo migliore, cosa molto utile con i Personal Computer, un overclock con i microcontrollori può essere molto conveniente e può servire in tante occasioni. Un breve elenco di applicazioni con innalzamento della velocità operativa chiarà molti dubbi.

  • Nei programmi che utilizzano la comunicazione seriale RS232 o UART, un basso valore di clock genera probabili inesattezze nella trasmissione. In altre parole, usando un quarzo da 4 MHz ed impostando una trasmissione seriale da 9600 baud (Baud Rate) potrebbero sorgere problemi di affidabilità e di precisione. Il baud rate di 9600 potrebbe subire anche piccole variazioni. Utilizzando, al contrario, quarzi veloci, anche le più alte velocità sarebbero rispettate. Riguardo il Baud Rate, la documentazione ufficiale di mikroBasic attesta che (in inglese):  maximum baud rate depends on the MCU’s clock and working conditions;
  • La libreria per la produzione del suono, in mikroBAsic, esige le più alte frequenze di clock, al fine di operare al meglio. Con un basso valore di quarzo, la generazione di alte frequenze potrebbe essere affetta da imprecisioni e mancanza di qualità. Al contrario, l'adozione di un cristallo di elevato valore assicurerebbe la generazione corretta delle note alte e di ultrasuoni. Anche in questo caso, la documentazione ufficiale di mikroBasic, riguardo la funzione sound_play, attesta che (in inglese): range is limited by Delay_Cyc parameter. Maximum frequency that can be produced by this function is Freq_max = Fosc/(80*3);
  • La libreria che utilizza la comunicazione PS/2 esige velocità operative elevate. Dal momento che le funzioni non utilizzano routine di interrupt, la velocità minima del quarzo deve essere di almeno 6 MHz;
  • Anche la comunicazione SPI potrebbe essere coinvolta negativamente da un basso valore di clock. Per assicurare un clock SPI di 10 MHz dovrebbe, addirittura, essere adottato un quarzo da 40 MHz. Bassi valori del cristallo precludono richieste di comunicazioni mancanti o sospese;
  • L'overclock è estremamente utile quando si devono effettuare operazioni precise della durata di pochi microsecondi. Ad esempio, se si vuol collegare un PIC alla televisione, per visualizzare una immagine, occorre che la MCU generi i segnali di sincronismo con la massima velocità e precisione;
  • Per i progetti che prevedono l'utilizzo dei moduli ad ultrasuoni per la misurazione delle distanze, la velocità è un fattore fondamentale e occorre che essa sia la più alta possibile.

Considerazioni

Per rispettare le specifiche del progetto, in fase di compilazione, occorre assicurarsi di impostare i parametri del clock utilizzato equivalenti al quarzo adottato. Questo consente di rispettare le temporizzazioni con precisione senza dover effettuare equivalenze e adattamenti di sorta.

Ricordate, alla fine è sempre il PIC che deciderà di funzionare o meno, in caso di overclock. Alcuni modelli possono eseguire correttamente i propri firmware, altri no, a parità di caratteristiche. Anche le condizioni atmosferiche potrebbero influire sulle performances finali. In inverno il prototipo potrebbe lavorare senza sosta alla grande ma, con un innalzamento della temperatura ambientale, l'intero sistema potrebbe andare in crash più facilmente.

Nelle prove si è poi riscontrato un fatto strano: con alcuni tagli di quarzo il PIC "girava" più lentamente del previsto, per poi riprendere la proporzionale velocità con tagli di quarzo superiori. Anche la qualità del cristallo, a questo punto, potrebbe essere una caratteristica determinante. In questi casi può essere utile anche sostituire i due condensatori da 22pF con altri valori. Magari utilizzando al loro posto dei compensatori che permettano la variazione della propria capacità interna.

Se si dovesse avere la necessità di utilizzare una frequenza maggiore ben specifica, e non si riuscisse a procurare il quarzo necessario, si può far oscillare il PIC con un clock esterno, di estrema precisione, generato da un generatore di impulsi programmabile o variabile.

Un altro esperimento da effettuare, in caso di "ostinazione" del PIC a non funzionare, è quello di innalzare, molto dolcemente, la tensione di alimentazione del microcontrollore, portandola lentamente a 5.5V, 6V, 6.5 e 7V. Oltre, potrebbe risultare pericoloso. A 8 V la distruzione del PIC è un fatto certo. Per questo motivo non tutti i modelli superano la prova dell'overclock. Naturalmente, la tensione più elevata e la maggiore velocità implica dissipazione di potenza e, quindi, calore.

Il progettista può provare ad innalzare la velocità di funzionamento di altre famigle di PIC.

Sperimentare vale sicuramente la pena ma per applicazioni commerciali, da distribuire ai clienti, occorre garantire sempre una elevata affidabilità di funzionamento, continuato nel tempo.

 

GDM

 

Quello che hai appena letto è un Articolo Premium reso disponibile affinché potessi valutare la qualità dei nostri contenuti!

 

Gli Articoli Tecnici Premium sono infatti riservati agli abbonati e vengono raccolti mensilmente nella nostra rivista digitale EOS-Book in PDF, ePub e mobi.
volantino eos-book1
Vorresti accedere a tutti gli altri Articoli Premium e fare il download degli EOS-Book? Allora valuta la possibilità di sottoscrivere un abbonamento a partire da € 2,95!
Scopri di più

7 Comments

  1. Giorgio B. Giorgio B. 21 novembre 2013
  2. s.prischich 21 novembre 2013
  3. Giovanni Di Maria gio22 21 novembre 2013
  4. IvanScordato Ivan Scordato 21 novembre 2013
  5. Marven 22 novembre 2013
  6. Giorgio B. Giorgio B. 23 novembre 2013
  7. giovanni1 27 febbraio 2014

Leave a Reply

Flip&Click Arduino e Python compatibile

Fai un abbonamento Platinum (EOS-Book + Firmware), ricevi in OMAGGIO la nuova Flip&Click, inviaci il tuo progetto e OTTIENI IL RIMBORSO