Area SX srl - Informatica e Microelettronica
0
Torna a: Home Page Soluzioni Microcontrollori PIC Il watch dog timer (WDT)

Il watch dog timer (WDT)

Data di pubblicazione: 17-10-2003 | Versione Italiana  | (No English Version)The English version of this article does not exists
Parole chiave: - PIC -

In questa lezione analizzeremo il funzionamento del Watch Dog Timer (che tradotto in italiano potrebbe significare Temporizzatore Cane da Guardia) il cui scopo è quello di migliorare l'affidabilità dei nostri circuiti basati su PICmicro.

Il Watch Dog Timer è in pratica un oscillatore interno al PICmicro, ma completamente indipendente dal resto della circuiteria, il cui scopo è quello di rilevare eventuali blocchi della CPU del micro e resettare il PICmicro per riprendere la normale esecuzione del programma.

Per poter rilevare un eventuale blocco della CPU durante l'esecuzione del programma principale, viene inserita all'interno di questo, una istruzione speciale, la:

CLRWDT (CLeaR Watch Dog Timer)

la quale azzera ad intervalli regolari il Watch Dog Timer non consentendogli di terminare il suo conteggio. Se la CPU non effettua questa istruzione prima del termine del conteggio allora si assume che il programma si è bloccato per qualche motivo e si effettua il Reset della CPU.

Il periodo minimo raggiunto il quale la CPU viene resettata è di circa 18ms (dipende dalla temperatura e dalla tensione di alimentazione). E' possibile però assegnare il PRESCALER al Watch Dog Timer per ottenere ritardi più lunghi fino a 2.3 secondi.

Per abilitare il Watch Dog Timer occorre abilitare in fase di programmazione il flag WDTE della word di configurazione. La modalità di attivazione di questo flag dipende dal programmatore in uso.

Assegnazione del PRESCALER al WDT

Agendo sul bit PSA del registro OPTION_REG è possibile assegnare il prescaler al Watch Dog Timer per ottenere dei tempi di ritardo di intervento maggiori. Il bit PSA và settato ad uno con l'istruzione:

BSF OPTION_REG,PSA

In caso contrario il prescaler verrà assegnato al TIMER 0. Ovviamente assegnado il prescaler al WDT non sarà possibile assegnarlo completamente al TIMER 0 e viceversa.

Intervenendo sui valori dei bit PS0, PS1 e PS2 dello stesso registro OPTION_REG potremmo ottenere diversi intervalli di ritardo. La scelta corretta dovrà essere fatta tenedo conto del massimo ritardo che riusciamo ad ottenere all'interno del nostro pèrogramma tra l'esecuzione di due istruzioni CLRWDT successive.

Nella tabella seguente è riportato la corrispondenza tra i valori di questi bit e gli intervalli che otterremo.

Esempio pratico di uso del Watch Dog Timer

Vediamo ora, come sempre, un esempio pratico di utilizzo del Watch Dog Timer. Useremo lo stesso schema usato nell'esempio predente e riportato nel file example4.pdf, il source è riportato nel file WDT.ASM.

In pratica questo esempio non differisce molto dall'esempio già usato per il Power Down Mode.

In pratica appena il programma entrerà in esecuzione vedremo il LED 1 lampeggiare. Durante il lampeggio viene eseguita continuamente l'istruzione CLRWDT per evitare che la CPU venga resettata (a tale proposito bisogna ricordarsi di programmare il PICmicro con l'opzione WDTE abilitata).

Non appena premiamo il tasto SW2 la CPU entra in un loop infinito (StopLoop) senza eseguire la CLRWDT.

Trascorsi circa 2.3 secondi, il Watch Dog Timer effettua il reset della CPU ed il led comincia nuovamente a lampeggiare.

Proviamo ora a riprogrammare il PIC16F84A con lo stesso programma ma senza abilitare il WDTE con il nostro programmatore. Noterete che premendo il tasto SW2 il lampeggio si blocca e non si sblocca più.

Segnala questo articolo: 



Parole chiave: - PIC -

Data di pubblicazione: 17-10-2003Hits: 34157
I marchi citati sono proprietà dei titolari dei relativi diritti. Le caratteristiche tecniche e i prezzi riportati sono indicativi e soggetti a variazioni senza preavviso. Le foto non hanno valore contrattuale. Nonostante accurate verifiche, il presente documento può contenere prezzi o specifiche errati. Area SX si scusa in anticipo e si impegna ad evitare tali imprecisioni.

 Area SX store
In questa sezione puoi ordinare direttamente i prodotti descritti in questo articolo
PICSTART+;P16F628A
Tutti i prezzi indicati sono espressi in Euro con IVA e spese di trasporto escluse. I prezzi si riferiscono al singolo pezzo
DescrizioneCodicePrezzo

Rivenditori Social Contatti Condizioni
Area SX s.r.l
Via Stefano Longanesi 25
00146 Roma

Tel: +39.06.99.33.02.57
Fax: +39.06.62.20.27.85
P.IVA 06491151004
Condizioni di vendita
Procedura di rientro in garanzia
Condizioni per i rivenditori