Pagina 1 di 2

Watchdog timer

MessaggioInviato: 30 nov 2011, 0:08
da gyruss
Ciao a tutti.
Ho un quesito da porre relativo al watchdog timer.
Da non molto sto studiando la programmazione in assembler in particolare col pic16f690 che era in dotazione al tool pickit 2.
Se non ho capito male, se abilito il wdt, è bene che venga resettato prima che raggiunga la fine del suo conteggio affinchè non resetti lui il programma. Al momento non ne comprendo l' utilità. Qualcuno sa dirmi in quale circostanza potrebbe invece essere utile ? #-o

Grazie, Marco.

Re: Watchdog timer

MessaggioInviato: 30 nov 2011, 0:18
da DonJ
Ciao,
il WTD è una comoda funzione che resetta il programma nel caso di problemi/bug del programma.
In questo modo, se per una condizione non gestita il PIC finisce in un ciclo infinito il WDT resetta il programma, per garantire una continuità di servizio.
Per usarlo correttamente dovresti pulire il registro del WDT costantemente in un ciclo di idle o in una funzione che viene richiamata spesso, così da avere la certezza che il programma "passa di lì".

Diciamo che se devi sviluppare un'applicazione che non ammette interruzioni il WDT lo tieni per sicurezza

Re: Watchdog timer

MessaggioInviato: 30 nov 2011, 0:25
da AjKDAP
Se il WDT non viene resettato tramite programma magari è perché il PIC si è bloccato in qualche loop.

Quindi l'unico modo per uscirne è resettare il micro :-) a volte può essere utile.

Ovviamente ci sono anche altri utilizzi.

EDIT:Foto UtenteDonJ mi ha preceduto! :D

Re: Watchdog timer

MessaggioInviato: 30 nov 2011, 0:32
da DirtyDeeds
E' un analogo informatico del dispositivo dell'uomo morto installato sui treni... ;-)

Re: Watchdog timer

MessaggioInviato: 30 nov 2011, 0:36
da gyruss
Grazie ragazzi.
Non potrebbe essere anche un cane che si morde la coda?
Se nell' ipotesi che il micro si trovi in condizione di loop infinito per un qualcosa che a me è sfuggito durante la stesura del programma, l' utilizzo del wdt che resetta il programma, non mi permette di poter individuare il bug. O no ?
Un' altra cosa. Le variabili del programma rimangono inalterate con l' intervento del wdt ?

Ciao.

Re: Watchdog timer

MessaggioInviato: 30 nov 2011, 0:56
da TardoFreak
in effetti potrebbe esserlo (mi è già capitato) ma si può evitare il problema perché un programma per un micro è di solito fatto con un' inizializzazione seguita da un ciclo infinito.
Se nella parte di inizializzazione gli metti un qualcosa, ad esempio un pin di uscita che va alto e poi ritorna basso dopo un certo tempo per indicare l' avvenuta partenza del programma, riesci a capire se il watchdog interviene di continuo monitorando tale segnale. Se sta fermo il watchdog non interviene, se invece è tutto un movimento vuol dire che ci sono casini nel programma. :mrgreen:

Per il resto il watchdog, di solito, corrisponde ad un reset brutale, di quelli hardware. Bisogna leggere il datasheet per sapere il tipo di reset che genera. -:-

P.S. MAI METTERE il reset del watchdog all' interno di un' interrupt ciclica.

Re: Watchdog timer

MessaggioInviato: 30 nov 2011, 1:14
da DonJ
TardoFreak ha scritto:MAI METTERE il reset del watchdog all' interno di un' interrupt ciclica.

Nel senso di un'interrupt tipo timer overflow?
Mi rispondo da solo
eh sì perché altrimenti una volta finito l'ISR si tornerebbe da capo con il WDT azzerato, rendendo il WDT di fatto inutile.

Re: Watchdog timer

MessaggioInviato: 30 nov 2011, 1:19
da TardoFreak
Bingo! :ok:
Il reset del WDT va messo in posti strategici per evitare che quello che DEVE essere eseguito in un tempo massimo "t" non duri più a lungo per qualche problema inaspettato.

Re: Watchdog timer

MessaggioInviato: 30 nov 2011, 1:23
da gyruss
Ora è tutto molto più chiaro.
Grazie ancora. O_/

Re: Watchdog timer

MessaggioInviato: 30 nov 2011, 13:46
da Dryden
Domando probabilmente stupida:

1)é possibile allungare i tempi del WDT oltre quelli massimi riportati sul datasheet?
in caso negativo della domanda sopracitata, è possibile abilitare/disabilitare il WDT durante la normale esecuzione del programma?

grazie :-)