MicroMonitor DS 1232

Il DS1232 di Maxim è un versatile ed efficace supervisore per microprocessori e microcontrollori. Nonostante il minuto package esso svolge tre funzioni estremamente utili e critiche quali controllo della tensione di alimentazione, debounce per il reset manuale e watchdog programmabile.

L’istante di accensione di qualsiasi sistema digitale rappresenta sicuramente un momento particolarmente critico. Nei primi millisecondi di funzionamento infatti si hanno forti assorbimenti di corrente da parte dell’intera scheda ed in particolare di alcuni suoi componenti. A causa delle capacità distribuite sulla scheda, delle cadute di tensione sui collegamenti e della resistenza equivalente del generatore, la tensione di alimentazione dei componenti cresce in maniera relativamente lenta (rispetto alle tipiche velocità di funzionamento), e spesso con velocità differente nelle diverse parti del circuito. Oltre a questo, i singoli componenti possono iniziare a funzionare a tensioni leggermente differenti (cioè hanno tolleranze diverse nei confronti della tensione di alimentazione) e possono richiedere tempi diversi prima di porsi nello stato attivo. Il risultato  di questa situazione è che risulta fondamentale, soprattutto per sistemi che richiedano particolare affidabilità, assicurarsi che prima che il firmware  inizi la sua esecuzione, tutti i componenti abbiano raggiunto uno stato di funzionamento stabile. In caso contrario qualsiasi interazione tra il firmware e le periferiche esterne (e perfino quelle interne in qualche caso) potrebbe fornire risultati errati. Una soluzione molto semplice e spesso utilizzata per ritardare l’avvio del microcontrollore (e quindi del programma) è quello di utilizzare il classico schema di figura 1, costituito da un semplice circuito RC che ha la funzione di mantenere basso il livello del piedino di reset (attivo basso) del microcontrollore.

Figura 1: circuito di reset classico.

Figura 1: circuito di reset classico.

Il diodo svolge la funzione di rendere più veloce la transizione alto-basso quando la tensione viene tolta. Questa soluzione, sebbene molto utilizzata, non può garantire  il corretto funzionamento del sistema in ogni situazione, e sicuramente non lo fa in almeno tre casi abbastanza comuni. Il primo caso si verifica quando il tempo di salita della tensione di alimentazione è o diventa piuttosto lento (paragonato alla costante di tempo del circuito), in tal caso il reset non sarà ritardato. Un secondo caso è quello che viene definito “brown-out”, cioè quando la tensione di alimentazione, dopo avere raggiunto e mantenuto per diverso tempo il suo valore nominale, scende momentaneamente sotto il minimo valore tollerato. In questo caso il sistema  potrebbe non essere resettato, o non essere resettato con sufficiente prontezza (in simili frangenti invece altre periferiche potrebbero farlo e generare errori nel caso di comunicazione con il microprocessore).  Un terzo caso si verifica quando si ha l’esigenza di determinare con precisione le soglie di tensione di funzionamento. Questa soluzione risulta quindi parziale o comunque non soddisfacente in molti casi.

Il reset manuale

La maggior parte dei sistemi digitali è dotata di un pulsante per for nire manualmente  il comando di reset al microprocessore. Il segnale  prodotto dal pulsante ha in genere delle pessime caratteristiche in termini di tempo di salita e soprattutto di stabilità (rimbalzi).  Questo può portare ad un riavvio non perfetto del microprocessore e del firmware, infatti alcuni registri o periferiche potrebbero essere avviate in maniera incorretta. Lo stesso firmware, che in genere contiene nella prima parte alcune inizializzazioni abbastanza critiche (tra cui le impostazioni relative alle interruzioni ed alle modalità di funzionamento) potrebbe avviarsi in condizioni non corrette e non facilmente individuabili, dando luogo a malfunzionamenti del sistema. Anche per il pulsante  di reset manuale sarebbe quindi necessario prevedere dei circuiti di condizionamento, aumentando  il numero di componenti e la complessità del sistema.

Watchdog affidabile

Una misura di sicurezza spesso utilizzata in molti sistemi è l’impiego del cosiddetto “watchdog”: un dispositivo che ha il compito di resettare il microprocessore  nel caso questo si blocchi a causa di un errore o malfunzionamento. In genere il watchdog fornisce un impulso di reset al microprocessore se non viene a sua volta resettato dal programma prima che scada il suo timeout. Attualmente quasi tutti i microcontrollori dispongono di un watchdog integrato, che può essere controllato dal software. Tuttavia proprio questa ultima caratteristica rende il dispositivo non completamente affidabile. Un software fuori controllo infatti potrebbe resettare e perfino disabilitare  il watchdog interno. Inoltre un’eventuale avaria temporanea del componente potrebbe portare al blocco dello stesso watchdog. Per questo motivo in applicazioni particolarmente critiche è comune l’impiego di watchdog esterni, che funzionano in maniera completamente indipendente dal microcontrollore.

Il MicroMonitor DS1232

Tutte le funzioni viste prima possono essere gestite con un solo componente prodotto da Maxim-Dallas, definito “MicroMonitor” e siglato DS1232. Questo dispositivo si occupa del monitoraggio continuo e della gestione dei tre parametri fondamentali visti prima: la tensione di alimentazione del microprocessore, l’esecuzione del software, e il reset esterno, evitando malfunzionamenti dovuti a condizioni impreviste su questi parametri. In particolare il MicroMonitor controlla la tensione di alimentazione del microprocessore, confrontando la con un preciso riferimento interno compensato in temperatura, e assicurandosi che questa non scenda sotto un livello di tolleranza prescelto. In questo caso il dispositivo attiva l’uscita di reset, fermando l’esecuzione, fino a quando la tensione non si riporta al livello nominale. Il segnale di reset è mantenuto basso per un minimo di 250ms, in questo modo si evitano funzionamenti intermittenti e potenzialmente dannosi. La seconda funzione svolta dall’integrato è quella di fornire un segnale di reset “pulito” a partire da un segnale esterno (derivato da un pulsante o da altri dispositivi). Anche in questo caso l’uscita presenta fronti netti ed una durata minima dell’impulso di 250ms. La terza funzione è quella di watchdog: il dispositivo  provvede a resettare il microcontrollore  se non riceve un segnale da questo entro lo scadere del timeout. E’ possibile programmare il timeout in un intervallo compreso tra 150ms e 1,2 secondi. Lo schema interno del MicroMonitor è mostrato in figura 2, mentre la sua piedinatura è visibile in figura 3.

Figura 2: schema funzionale del DS1232.

Figura 2: schema funzionale del DS1232.

 

Figura 3: piedinatura del DS1232.

Figura 3: piedinatura del DS1232.

L’ingresso PBRST\ è quello a cui può essere collegato un pulsante di reset o un segnale di reset esterno, TD permette di impostare gli intervalli di tempo da utilizzare, TOL la tolleranza per il brownout reset (5% o 10% di Vcc), ST è l’ingresso di “strobe” per resettare periodicamente  il watchdog. Come si può notare sono disponibili due uscite complementari per il reset: RST\ ed RST. Questa utile caratteristica permette di collegare facilmente il componente a ingressi di reset attivi alti o bassi.

Utilizzo con in sistema basato  8051

Utilizzare il DS1232 in un sistema basato su microcontrollore 8051 (ma anche altri microcontrollori e microprocessori) non presenta alcuna difficoltà: è sufficiente collegare il dispositivo  all’ingresso di reset, alimentarlo e collegarvi il pulsante di reset, come mostrato in figura 4.

Figura 4: collegamento del DS1232 ad un 8051.

Figura 4: collegamento del DS1232 ad un 8051.

L’uscita di reset utilizzata per il microcontrollore è quella diretta, quella negata può essere lasciata libera o collegata ad una resistenza di pull-up come in questo caso per osservare dall’esterno il comportamento del circuito. Il segnale  ST, utilizzato per il watchdog è collegato alla porta P3.4 del microcontrollore, che provvederà periodicamente ad attivarla per evitare il timeout. Il comportamento del sistema all’accensione è mostrato in figura 5, in cui è mostrata la tensione di alimentazione (traccia 1) e il reset generato dal componente.

Figura 5: segnale di reset all’avvio del sistema (traccia 1 Vcc, traccia 2 RST)

Figura 5: segnale di reset all’avvio del sistema (traccia 1 Vcc, traccia 2 RST)

Come si può vedere, all’avvio il microcontrollore è tenuto nello stato di reset per circa 400ms. Un simile comportamento si ha quando viene premuto il pulsante  di reset (figura 6): anche in questo caso a seguito di un impulso di reset piuttosto breve e potenzialmente affetto da rimbalzi, si ha un immediato segnale di reset pulito e di durata pari a circa 600ms, che previene eventuali reset multipli e/o parziali.

Figura 6: segnale di reset alla pressione del tasto (traccia 1 tasto, traccia 2 RST).

Figura 6: segnale di reset alla pressione del tasto (traccia 1 tasto, traccia 2 RST).

 

Figura 7: segnale di reset in caso di brownout (traccia 1 Vcc, traccia 2 RST).

Figura 7: segnale di reset in caso di brownout (traccia 1 Vcc, traccia 2 RST).

Infine nelle figure 7 e 8 è mostrato il comportamento del sistema nel caso di brownout. Come si vede non appena la tensione di alimentazione (traccia 1) scende sotto il valore di tolleranza impostato viene generato un reset, che viene mantenuto fintantoché la tensione non raggiunge nuovamente il valore nominale (figura 8).

Figura 8: segnale di reset al rientro dal brownout (traccia 1 Vcc, traccia 2 RST).

Figura 8: segnale di reset al rientro dal brownout (traccia 1 Vcc, traccia 2 RST).

 

 

Scrivi un commento