Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Watchdog timer

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Watchdog timer

Messaggioda Foto Utentegyruss » 30 nov 2011, 0:08

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.
Avatar utente
Foto Utentegyruss
50 1 3
New entry
New entry
 
Messaggi: 75
Iscritto il: 26 mar 2010, 13:01
Località: Torino

1
voti

[2] Re: Watchdog timer

Messaggioda Foto UtenteDonJ » 30 nov 2011, 0:18

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
"Computers, operating systems, networks are a hot mess. They're barely manageable, even if you know a decent amount about what you're doing. Nine out of ten software engineers agree: it's a miracle anything works at all."
@fasterthanlime
Avatar utente
Foto UtenteDonJ
4.611 6 10 13
Master EY
Master EY
 
Messaggi: 2559
Iscritto il: 19 lug 2009, 22:13
Località: Croccamauria

0
voti

[3] Re: Watchdog timer

Messaggioda Foto UtenteAjKDAP » 30 nov 2011, 0:25

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
'˙˙˙·٠•● Alberto ●•٠·˙˙˙'
________________________
http://www.ajk.altervista.org
Avatar utente
Foto UtenteAjKDAP
1.255 2 6 9
Expert EY
Expert EY
 
Messaggi: 796
Iscritto il: 17 mag 2006, 0:13
Località: nella coda dei pronti

0
voti

[4] Re: Watchdog timer

Messaggioda Foto UtenteDirtyDeeds » 30 nov 2011, 0:32

E' un analogo informatico del dispositivo dell'uomo morto installato sui treni... ;-)
It's a sin to write sin instead of \sin (Anonimo).
...'cos you know that cos ain't \cos, right?
You won't get a sexy tan if you write tan in lieu of \tan.
Take a log for a fireplace, but don't take log for \logarithm.
Avatar utente
Foto UtenteDirtyDeeds
55,9k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 7012
Iscritto il: 13 apr 2010, 16:13
Località: Somewhere in nowhere

0
voti

[5] Re: Watchdog timer

Messaggioda Foto Utentegyruss » 30 nov 2011, 0:36

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.
Avatar utente
Foto Utentegyruss
50 1 3
New entry
New entry
 
Messaggi: 75
Iscritto il: 26 mar 2010, 13:01
Località: Torino

0
voti

[6] Re: Watchdog timer

Messaggioda Foto UtenteTardoFreak » 30 nov 2011, 0:56

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.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

2
voti

[7] Re: Watchdog timer

Messaggioda Foto UtenteDonJ » 30 nov 2011, 1:14

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.
"Computers, operating systems, networks are a hot mess. They're barely manageable, even if you know a decent amount about what you're doing. Nine out of ten software engineers agree: it's a miracle anything works at all."
@fasterthanlime
Avatar utente
Foto UtenteDonJ
4.611 6 10 13
Master EY
Master EY
 
Messaggi: 2559
Iscritto il: 19 lug 2009, 22:13
Località: Croccamauria

0
voti

[8] Re: Watchdog timer

Messaggioda Foto UtenteTardoFreak » 30 nov 2011, 1:19

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.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[9] Re: Watchdog timer

Messaggioda Foto Utentegyruss » 30 nov 2011, 1:23

Ora è tutto molto più chiaro.
Grazie ancora. O_/
Avatar utente
Foto Utentegyruss
50 1 3
New entry
New entry
 
Messaggi: 75
Iscritto il: 26 mar 2010, 13:01
Località: Torino

0
voti

[10] Re: Watchdog timer

Messaggioda Foto UtenteDryden » 30 nov 2011, 13:46

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 :-)
Avatar utente
Foto UtenteDryden
20 4
New entry
New entry
 
Messaggi: 97
Iscritto il: 1 gen 2011, 14:37
Località: Bolzano

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti