Tutorials - PIC Peripherals

 

Il RESET

 


Il RESET da WDT

Tutti i PIC hanno un timer Watchdog che dà modo allo sviluppatore di ripristinare il dispositivo in caso di una operazione inaspettata.

Il timer Watchdog (letteralmente cane da guardia), una volta avviato,  deve essere periodicamente cancellato attraverso il software per impedire un reset. Possiamo fare una analogia con il dispositivo di uomo morto, un pedale o pulsante che il conduttore di un treno deve periodicamente premere per identificare che è ancora nel pieno delle sue facoltà; se fosse colto da mlaore e non premesse il pulsante, il treno si arresterebbe da solo.

Così pure il WDT: se il software non "preme" periodicamente il "pulsante", vuol dire che non sta facendo quanto il programmatore ha previsto e il sistema riceve un Reset.

Ovviamente questo dispositivo è efficace solo se usato correttamente: occorre che il WDT sia azzerato con la giusta cadenza ( e per questo esiste una istruzione opportuna), ma senza ecceder, dato che troppi comandi del genere, piazzati a caso, potrebbero annullarne l' effetto. Come pure è necessaria una giusta procedura, una volta che il WDT abbia generato il Reset, per fare fronte all' evento, che dovrebbe essere del tutto eccezionale; altrimenti non sarebbe possibile verificare le cause dell' evento e/o eventuali errori di programmazione.

Il timer Watchdog, essendo quindi una protezione che richiede una gestione, va attivato, se richiesto, nella fase di CONFIG del processore e, una volta attivato, esso non può mai essere disattivata nel software, anche durante la fase di SLEEP. 
Nella famiglia PIC18, il timer di Watchdog può essere disabilitato nei bit di configurazione ma comunque essere attivato dal software. Questo ha uno svantaggio: può essere disabilitato accidentalmente, ma consente al dispositivo di essere mandato in SLEEP senza il timer di Watchdog come causa di risveglio. 

Il timer Watchdog è implementato con un oscillatore RC interno molto semplice. 
Il periodo di timeout può variare notevolmente da dispositivo a dispositivo e con tensione e temperatura. L'utente deve sempre tenere a mente questi limiti. 
Collegato al WDT c'è un postscaler che può essere utilizzato per generare il timeout in periodi anche molto lunghi.
In alcuni processori, questo postscaler è in comune con il Timer0 e può essere assegnato solo all' uno o all' altro modulo. Nei PIC18 e negli Enhanced Midrange, invece, il WDT e il Timer0 hanno scaler propri.

Il circuito di timer Watchdog consuma corrente, se abilitato, il che dovrebbe essere preso in considerazione durante la progettazione per applicazioni a bassa potenza.

Gli effetti del WDT Reset sono diversi a seconda dei processori.

  • Per il core a 12 bit core e i modelli standard a 16 bit, WDT resetta le parti in funzione.

  • Per il core a 14 bit e gli enahanced a 16 bit, WDT resetta le parti in funzione ed è possibile casua di Wake-up dalla condizione di SLEEP.

In generale:

  • avvia l' esecuzione del programma dalla istruzione contenuta nella locazione che corrisponde al vettore di RESET

  • sono inizializzati alcuni SFR

  • Il contenuto della RAM non è modificato

  • il flag POR, BOR e PD non sono modificati

  • TO è azzerato

Dopo il Reset da WDT, il programma è costretto a ripartire dal vettore di Reset.

Il contenuto della RAM non viene modificato e conserva i dati precedenti all' evento.

Se ilo dispositivo è in condizione di SLEEP, il reset da WDT fa riprendere l' esecuzione del programma con l' istruzione successiva a quella di SLEEP (esclusi i core a 12 bit).
Se si sta usando un clock a cristallo, il timer di startup dell' oscillatore determina un ritardo necessario alla stabilizzazione dello stesso.

Anche in questo caso, la situazione dei flag permette di identificare la causa del Reset e prendere gli opportuni provvedimenti


  • Durante la fase di debug è opportuno escludere la funzione del WDT onde evitare problemi di esecuzione, in quanto l' azione del timer di WatchDog non è normalmente gestibile dal tool di debug.
     
  • Abilitando WDT dalla configurazione, occorre obbligatoriamente disporre nel programma del periodico azzeramento del timer.

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 28/04/13.