Overclock di una MCU

Tutti i microcontrollori per funzionare hanno bisogno di un segnale di frequenza, interno o esterno. Tale frequenza di funzionamento, secondo le specifiche dei componenti, non può superare l'Absolute Maximum Rating, pena il malfunzionamento o, addirittura, la distruzione del componente. Possiamo overcloccare un microcontrollore?

Avatar di Elettronica Open Source

a cura di Elettronica Open Source

banner prova1

In queste righe cercheremo di spiegare come "tirare" al massimo le possibilità di un microcontrollore allo scopo di scoprire il limite oltre il quale esso non riesce più ad espletare bene il suo lavoro. Lo faremo aumentando la sua velocità operativa. Per ragioni di costo useremo il PIC 16F84/04 che, bene o male, tutti possediamo nelle nostre scatole di componenti elettronici. La sua eventuale distruzione, dunque, non costituirebbe una tragedia.

Tali modelli lavorano (oserei dire lavoravano, visto che il modello in questione è un po' vecchiotto) ad una frequenza operativa di 4 MHz. Un eventuale innalzamento di frequenza non costituirebbe una grossa scoperta scientifica, visto che al giorno d'oggi esistono modelli di MCU che superano abbondantemente le due cifre, per la velocità raggiunta.

La filosofia delle prove che andiamo ad effettuare è dettata da una semplice e pura curiosità, anche perché facendo lavorare una MCU ai limiti delle sue possibilità vorrebbe dire, inevitabilmente, accorciarne la vita media.

Per la prova di velocità faremo lampeggiare un diodo LED, collegato alla porta RB0, con annessa la solita resistenza di limitazione di corrente. Indipendentemente dal compilatore utilizzato, occorre scrivere un adeguato firmware che, a grandi linee, esegua alcuni compiti, espressi nel seguente pseudo linguaggio:

  1. Configura la porta RB0 in uscita;
  2. Pone a livello logico alto la porta RB0;
  3. Aspetta mezzo secondo;
  4. Pone a livello logico basso la porta RB0;
  5. Aspetta mezzo secondo;
  6. Ripete dal punto 2.

schema elettrico
Figura 1: schema elettrico

Scrivendo il programma e caricando l'eseguibile all'interno della MCU, con un cristallo di quarzo di 4 MHz, il diodo LED dovrebbe lampeggiare al ritmo di 1 secondo (1 Hz).

Passiamo, dunque, a sostituire il quarzo con un modello leggermente maggiore, diciamo di 6 MHz.

Dopo aver ricompilato e ricaricato il programma, con molta soddisfazione possiamo constatare che il semiconduttore luminoso lampeggia perfettamente ad una cadenza maggiore, di circa 1,5 Hz. La velocità è aumentata, infatti, del 50% e il microcontrollore non sembra soffrirne più di tanto.

Affamati di ulteriori prove e di altri trionfi, grazie ai primi successi acquisiti, saliamo ulteriormente di grado procurandoci un quarzo da 10 MHz. Rieseguiamo nuovamente le operazioni di programmazione e, con grande stupore, il nostro diodo LED lampeggia molto velocemente, alla frequenza di circa 2,5 Hz (anziché di 1 Hz). La cadenza è aumentata, adesso, del 150% circa.

Il nostro coraggio, ormai, non è più misurabile e l'eccitazione è alle stelle: ci spingiamo ancora oltre. Proviamo un quarzo da 15 MHz. Funziona perfettamente, sempre più veloce. Adesso la cadenza è aumentata del 275% circa, ossia circa 3,8 Hz (anziché di 1 Hz).

Proviamo ancora a salire, colleghiamo un cristallo da 20 MHz. Restiamo stupefatti, funziona ancora, il diodo LED lampeggia alla frequenza di ben 5 Hz! La velocità è aumentata di 5 volte. Lo stesso successo lo otteniamo usando un quarzo da 27 MHz. E possiamo anche constatare il buon funzionamento collegando alla porta RB0 un oscilloscopio oppure, ancora meglio, un frequenzimetro.

A breve termine, dunque, il funzionamento è garantito ma a lungo termine? Dovrebbero essere eseguite più prove a riguardo, magari lasciando il microcontrollore overcloccato e in funzione per qualche mese. Si potrebbero anche "caricare" ancor di più le porte di uscita, aumentando i carichi connessi.

quarzi
Figura 2: set di quarzi a diverse frequenze

Per questa tipologia di MCU un overclock potrebbe essere utile nelle operazioni di ADC, di DAC o di produzione di segnali audio o di suono, per le quali, maggiore è la velocità operativa del sistema e migliore è il risultato prodotto in uscita.

Ovviamente, è giusto e corretto sperimentare ed effettuare le prove ai limiti della "decenza elettronica", ma per la distribuzione di applicazioni commerciali, da distribuire ai clienti, occorre garantire una elevata affidabilità di funzionamento.

Per chi volesse approfondire l'argomento potrebbe provare ad innalzare la frequenza di lavoro anche di altre tipologie di microcontrollori o, addirittura, ad altre marche.