Circuito supervisore watchdog timer ADM1232

Come utilizzare un circuito di supervisione hardware usando l’ADM1232

L’architettura dei microcontrollori ha raggiunto ottimi livelli di affidabilità con elevati livelli prestazionali. Solitamente, quando si parla di affidabilità, si intende la capacità del micro di funzionare in ambienti critici, dove gli intervalli di temperature sono estesi (-40°C +85°C) o dove la presenza di rumori elettromagnetici o altri elementi fisici non deve certamente bloccare il funzionamento del microcontrollore.

Nella maggior parte dei casi i blocchi software sono ancora causati da errori di scrittura del firmware che gira sul micro. Questi blocchi sono tipicamente dovuti a loop infiniti o deadlock; errori che aumentano all’aumentare della complessità del codice.

Quando non possiamo permetterci nessun tipo di blocco vengono impiegati sistemi di supervisione hardware che, tramite sistemi integrati all’interno del micro stesso (Watchdog Timer) o con specifici moduli esterni, possono eseguire un reset del micro appena ‘si accorgono’ che l’esecuzione del codice del micro è bloccata.

Alcuni moduli permettono anche di controllare la qualità della tensione di alimentazione, e di eseguire un reset non appena si verificano abbassamenti di tensione.

Il dispositivo che ho utilizzato per questo tutorial è l’integrato ADM1232 prodotto da Analog Device, molto semplice da utilizzare e dal costo contenuto (circa 2 €).

L’idea di base è quella di controllare la presenza di uno strobe, un segnale impulsivo, generato dal microcontrollore, che deve presentarsi costantemente entro certi valori di tempo.

Se questo segnale dovesse mancare (indice di un blocco di funzionamento del microcontrollore), il circuito di supervisione ADM1232 eseguirà un reset del microcontrollore.

La figura seguente mostra il tipico collegamento tra il circuito di supervisione ed il microcontrollore:

ADM1232 Supervisor CircuitIl diagramma a blocchi è rappresentato nella figura seguente:

Diagrammi a blocchi ADM1232

Il dispositivo genera un impulso di reset ad intervalli che possono variare tra 150ms, 600ms e 1200ms. Questi tre valori sono impostabili tramite il pin TD (Time Delay), per selezionare 150ms il TD va collegato a massa, per selezionare 600ms il pin TD va lasciato appeso (senza collegarlo ne a Gnd ne a Vcc), per selezionare 1200ms va collegato alla Vcc.

Per evitare la generazione dell’evento reset, dobbiamo inviare un impulso negativo al pin STROBE.

Questo impulso deve essere inferiore del tempo di reset impostato, quindi se ad esempio abbiamo selezionato il tempo di 1200ms, al pin STROBE dovrà arrivare un segnale impulsivo con un periodo inferiore ai 1200ms.

I grafici seguenti mostrano l’andamento dei segnali:

Segnale Strobe

Mentre il seguente grafico mostra la generazione dell’impulso di reset quando il segnale di strobe supera i 1200ms:

Segnale di reset watchdog

Affrontiamo la parte pratica realizzando il circuito seguente utilizzando un ATMEGA328P Stand Alone:

Adm1232 watchdog circuito supervisore

Ho impostato il TD a 1200ms, portando a +5V il pin TD dell’integrato supervisore ADM1232.

Lo sketch di test esegue una commutazione del pin 9, per generare il segnale di STROBE che permette di interdire la generazione del segnale RESET. Ho inserito un ritardo software di 500ms per simulare l’esecuzione di altro codice.

In questa condizione il segnale di STROBE è generato ogni 100ms circa e quindi essendo inferiore al tempo di 1200ms, il segnale di RESET non viene generato.

Invece nello sketch seguente viene simulato un ritardo maggiore di 1200ms, in questo caso il chip ADM1232 non ricevendo il segnale di STROBE entro i 1200ms produrrà il segnale di RESET per riavviare l’esecuzione del codice sulla ATMEGA328P.

Attenzione il circuito supervisore ADM1232 può essere usato solo su dispositivi privi di bootloader. Infatti la presenza del bootloader renderà l’esecuzione del codice, al primo avvio molto lenta, circa 1,5 secondi. Dato questo tempo il circuito supervisore non potra mai ricevere, entro la soglia di 1,2 secondi, l’impulso di strobe, di conseguenza resetterà perennemente il microcontrollore.

Quando il vostro progetto è particolarmente complesso o richiede sicurezze aggiuntive, avere un circuito di supervisione permetterà di utilizzarlo in situazioni dove è richiesta una maggiore affidabilità ad esempio di definendo nel blocco setup() delle impostazioni di default di sicurezza, come il posizionamento iniziale di motori o la diseccitazione dei relè.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Offerte del giorno Amazon
Preferiti
Rimani aggiornato

Sondaggi
Sorry, there are no polls available at the moment.
Seguimi su Twitter