timer watchdog in PIC

E

elexhobby

Guest
Qualcuno può spiegare a me il concetto di timer watchdog nel PIC?
Che cosa fa?Si dice che prima di dormire il timer di controllo dovrebbe essere eliminato, e si puo 'svegliare' il uC dal sonno.Ma come si decide il ritardo dopo il quale si dovrebbe svegliare il uC?
Non riesco a capire perché il timer watchdog è necessaria per svegliare il uC, se nessun altro può interrompere.
Inoltre, c'è qualche altra applicazione ingegnoso il timer di controllo durante il funzionamento, oltre il sonno.
Ho letto che reimposta il uC ogni volta che va in un loop infinito.
Ma come fa il timer watchdog inintiate stessa (come fa a sapere che il uC è andato in crash).Se il mio programma consiste in una attività periodica, ad esempio il trasferimento dei dati seriale, il timer watchdog può sentire questo è un loop infinito - poiché io sono ripetendo la stessa operazione.
In tal caso il programmatore non ha il mal di testa di continuo del timer di controllo dopo ogni poche istruzioni ad impedire il ripristino del uC
Kindly help ...

 
Ciao,

Nella mia comprensione e la lettura, un timer di controllo (non solo per PIC in generale) è un timer indipendente che continua a ticchettare indipendentemente da ciò che il vostro uC fa.Di solito si basa sul master clock di sistema e può essere scalata ad aumentare il suo periodo.

In alcuni casi, watchdog timer è molto utile.Per esempio, è possibile utilizzare per attivare gli eventi ei periodicamente quando il timer overflow.Ad esempio, si desidera che il uC di fare qualcosa in ogni 1 millisecondo o giù di lì, si può prescale il timer watchdog per renderlo overfolw in ogni millisecondo - facendo così risparmiare dal codice della subroutine di ritardo e lo spazio di memoria.Really Neat.

Ma penso che la funzione più importante del timer Watchdog è quello di vedere se il tuo masterclock si esegue correttamente.Interfernces esterni possono causare il master clock di rallentare o addirittura arrestare.

Si può semplicemente ignorare questo timer watchdog Se non volete utilizzarlo in due modi:
a.) Disattiva tutti gli interrupt per default tutti gli interrupt sono disabilitati.Watchdog Timer Over Flow (WDTO) è un software di interrupt.
b.) inizializzando nel codice che il timer watchdog è disattivato.

GrazieAggiunto dopo 7 minuti:qui ho tirato fuori da uno dei miei ebooks PIC

1,7 Watchdog
Una cosa è che richiedono la nostra attenzione è un funzionamento perfetto del microcontrollore
durante la sua run-time.Supponiamo che, a causa di alcune interferenze (che spesso si verifica nel settore industriale) per il microcontrollore interrompe l'esecuzione del programma, o peggio, si inizia a lavorare in modo errato.

Naturalmente, quando questo accade con un computer, abbiamo semplicemente azzerarlo e continueremo a lavorare.Tuttavia, non vi è alcun pulsante di reset si può spingere il microcontrollore e quindi risolvere il nostro problema.Per superare questo ostacolo, abbiamo bisogno di introdurre un ulteriore ostacolo chiamato cane da guardia.Questo blocco è in realtà un altro free-run counter dove il nostro programma ha bisogno per scrivere uno zero in ogni volta che si esegue correttamente.Nel caso in cui il programma viene "bloccata", pari a zero, non sarà scritto in, e contrastare da sola, azzerare il microcontrollore al raggiungimento suo valore massimo.Ciò si tradurrà in esecuzione di un programma nuovo, e correttamente questa volta.Che è un elemento importante di ogni programma che deve essere affidabile, senza la supervisione dell'uomo.

 
Molte grazie per ur help.Ora ho un'idea più chiara dello scopo della WDT.
Ma ho qualche dubbio ...Se un ciclo di programma è più lungo periodo di overflow WDT timer, sono due le istruzioni CLRWDT usato?
Se il programma si blocca all'interno di un ciclo che contiene le istruzioni CLRWDT, non sarebbe resettare il PIC, giusto?
Inoltre, è possibile utilizzare il WDT come un timer quarto (so che questo sarebbe stato raro) e la scrittura di un interrompere il servizio di routine al 0000h stesso che controlla lo stato di TO (bar) nel registro di stato, per sapere se un overflow WDT si è verificato?Poiché si tratta di un oscillatore greggio, non può essere utilizzato come un timer preciso ..

 
In ogni microcontrollore, il cane da guardia è un timer che si suppone per reimpostare il micro, se il tempo è scaduto.La funzione di watchdog è quindi di rilevare se il micro è andato "Berserk" e reset.
E 'simile al tuo computer facendo qualcosa di divertente e il reset quando si vede non c'è nient'altro che puoi fare per riportarla sotto controllo.
In un sistema embedded, dato che non c'è nessuno in giro, questa funzione appartiene al timer watchdog.

Sul fatto che si intende utilizzare uno WDT, si scrive il programma in modo tale da azzerare il WDT abbastanza spesso per evitare che a reimpostare il micro in condizioni normali.Per esempio il PIC, il periodo è di 18 ms.Quindi assicuratevi di tornare ot l'istruzione CLRWDT in meno di 18 ms.In caso contrario, inserire un altro CLRWDT.Anche se non è molto consigliabile.Idealmente, si dovrebbe avere una sola istruzione CLRWDT, situato nel ciclo principale.In questo modo, se il programma si blocca, il WDT sarà resettare il micro.

Nel PIC, il WDT possibile utilizzare il prescaler a 8-bit (vedi bit PSA) per aumentare il periodo di timeout.Il prescaler possono essere assegnati sia a TMR0 o al WDT, quindi devi stare attento qui.Se è davvero necessario per TMR0, allora dovete prendere cura del WDT ai 18ms (in realtà, a meno che, dal momento che la tolleranza sulla WDT è grande, il minimo di circa 9 ms, se non mi sbaglio. Ma questo dovrebbe alcun problema, sinc anche a 1MHz il PIC eseguirà avout 9.000 istruzioni all'interno di tali 9ms).

Particolare attenzione deve essere pagata ad aspettare loop.Se il tempo di attesa non può essere determinato, si dovrà includere un CLRWDT in quel ciclo.Anche se, come lei ha detto giustamente, che è pericoloso, perché se il micro si blocca in un ciclo il WDT non sarà reset.Quindi prestare particolare attenzione a questi cicli, assicurarsi che il programma non può rimanere bloccati lì.In alternativa, utilizzare una funzione di timeout, per limitare il tempo trascorso in loop, se possibile.

Quello che mi piace il WDT sul PIC è che scappa un oscillatore RC distinti, uno che non ha nulla a che fare con l'orologio di sistema principale, in modo che il WDT funzionerà non importa quale.
Cosa non mi piace veramente WDT del PIC è che funziona anche in modalità sleep.A volte questo è auspicabile, ma a volte non lo è.Penso che abbiano fatto davvero indipendente, quindi basta a vivere con questo.

Comunque, il WDT non dovrebbe essere utilizzato come un timer, non fare affidamento sul suo periodo.Non dovrebbe mai essere consentito di ripristinare il micro, tranne in modalità sleep.E poi si prova la fonte del risveglio e se trovi era il WDT, si può solo tornare a dormire.

 
Hai

WDT viene utilizzato per mantenere la funzione di controllore senza hangng
la natura del WDT è padrone sarà chiaramente il controller quando arriva overflow.
così in sequenza e si procederà alla liquidazione dei wdt prima che faccia traboccare.
Questo viene fatto utilizzando qualsiasi timer.
in alcuni casi il controller si bloccherà, al WDT stesso tempo, non otterrà sarà ancora smesso di correre e si overflow perché il controllore è impiccato.così traboccava reimposta wdt il controller e il controller comincia a lavorare di origine

 

Welcome to EDABoard.com

Sponsor

Back
Top