Quale di questi approcci per un timer watchdog?


8

Di recente ho imparato a conoscere i timer del watchdog e sto cercando di implementarne uno per il mio circuito allo scopo di ripristinare il mio microcontrollore (AVR) se si blocca (ovvero, non risponde al watchdog).

Sulla base di alcune ricerche, mi sembra che ci siano circa quattro opzioni:

  1. Collega il mio microcontrollore con un IC specifico esterno per watchdog-timer specifico .
  2. Collega il mio microcontrollore con un microcontrollore aggiuntivo (alcuni molto basilari e poco costosi), quest'ultimo codificato al solo scopo dedicato di temporizzazione del cane da guardia.
  3. Prepara il mio circuito di controllo basato su timer 555 e collegalo al mio microcontrollore.
  4. Utilizzare la funzionalità timer di watchdog interno sul mio microcontrollore.

.

Quale dei suddetti approcci classificheresti più in alto e perché?

Vorrei impostare un tempo di controllo di circa 6 secondi, in base a determinati criteri per il modo in cui sto realizzando il resto del mio design e codice (il dispositivo sarà un registratore di temperatura periodico alimentato a batteria).

Una piccola nota : la mia preferenza sarebbe l'opzione 1, per semplicità, tuttavia, in base alla coppia che ho trovato, queste parti sembrano essere costose (vorrei una soluzione al massimo a 1,25 USD) o consentire solo meno di 2 secondi per il periodo di tempo del watchdog.


1
4) è economico e semplice. La tua obiezione è solo che non puoi impostarla su 6 secondi? È un periodo piuttosto lungo per gli standard dei microcontrollori
pjc50,

1
@ pjc50: è decisamente economico :) E credo che anche il tempo di 6 secondi sia possibile. Tuttavia, articoli come questo suggeriscono che il cane da guardia interno potrebbe non essere robusto come quello esterno dedicato. E la ragione per la seconda volta è, sul mio microcontrollore, che ho un bootloader Arduino che include un tempo di attesa di 4 secondi al primo avvio. (Potrei imparare a riprogrammare questo, ma è ancora sulla mia curva di apprendimento)
boardbite

1
Dovresti assolutamente riparare il bootloader. I 4 secondi di attesa sono 4 secondi in più di consumo della batteria che è possibile eliminare. Invece di aspettare, ad es. Campionare un pin dedicato che viene tirato verso il basso durante l'installazione.
Igor Skochinsky,

Risposte:


14
  1. Più costoso, come hai già scoperto. Ma dovrebbe darti il ​​massimo livello di affidabilità: poiché il cane da guardia è completamente indipendente dal microcontrollore continuerà comunque a funzionare e ripristinerà il microcontrollore quando quest'ultimo è in fiamme, per così dire. Vedi 4)
  2. Brian è contrario, ma ci sono microcontrollori economici in un piccolo pacchetto, come il PIC10F200 nel SOT-23, che puoi usare come MMV (multivibratore monostabile) riavviabile, che in realtà è il cane da guardia. Se consideri un 555, un 10F200 è meglio: niente parti esterne e tempi più accurati (precisione dell'1%).
  3. un 555? Sul serio?
  4. Il watchdog interno farà se l'IC dedicato è troppo costoso. Se sei davvero paranoico, puoi pensare a uno scenario in cui un errore hardware bloccherà il microcontrollore e il watchdog con esso. Non ho mai saputo che questo accadesse, ma non so quanto dormi bene.

Come pjc50dice che 6 secondi è molto tempo. Un tipico microcontrollore eseguirà decine di milioni di istruzioni in quel momento, e quindi molte cose potrebbero andare storte. Supponiamo che tu stia controllando un certo carico con PWM e che un ciclo di lavoro basso del 10% mantenga bassa la dissipazione. Il microcontrollore va a banane e l'uscita si blocca a un ciclo di lavoro di alto livello al 100%. Al carico non piace e muore. Non vuoi aspettare 6 secondi perché ciò accada. Dovrebbe esserci una parte del codice in cui passi molta più frequenza. Un loop principale può avere una lunghezza massima di 10 ms, quindi è possibile impostare il timeout del watchdog su 100 ms, ad esempio. Se dai un calcio al cane una volta ogni 10 ms, un timeout significa che l'hai perso 10 volte! Una volta, OK, ma dieci volte è un disastro e devi agire. Il carico verrà spento dopo 100 ms invece di 6 secondi,


2
@ Nick - Nizza che vi piace, ma in realtà mi ha fatto passare più tempo a scrivere il resto della risposta :-).
Stevenvh,

1
Cosa c'è che non va nei 555 timer? :)
Justin ᚅᚔᚈᚄᚒᚔ

3
@Justin - Ci sono persone per le quali un 555 è una religione: puoi risolvere tutti i problemi del mondo e poi alcuni con un 555. Bene, un 555 è abbastanza versatile, le applicazioni tipiche sono multivibratori monostabili e astabili, PWM, ma non è il migliore per qualunque cosa. In questa domanda / risposta OP impiega un paio di settimane per progettare un circuito 555 per un compito non previsto. Lo stesso lavoro potrebbe essere programmato in un microcontrollore in un'ora. Non sto mettendo in discussione le abilità di OP qui né il suo approccio, poiché capisco che doveva usare un 555 ...
Stevenvh

2
Ogni volta che qualcuno usa parole come "assolutamente" mi sento in dovere di trovare un contro-esempio. In questo caso: un microcontrollore è più sensibile ai raggi cosmici e alle radiazioni di un 555, quindi in alcune applicazioni l'IMO 555 sarebbe preferibile in termini di affidabilità.
apalopohapa,

2
@apalopohapa - Sono corretto. Nei veicoli spaziali 555 potrebbe essere una scelta migliore rispetto ai microcontrollori. Ovviamente, i computer fatti con 555 sono (indovinabili) 15 ordini di grandezza meno precisi , più grandi, più affamati di potenza e non così facili da programmare in C ++ o Ada ... :-)
stevenvh

5
  1. Il timer del watchdog è semplice, funziona a buon mercato. Scelta ovvia.
  2. Un microcontrollore aggiuntivo è eccessivo. Non è utile poiché è necessario programmarlo, è più costoso, più area.
  3. Questo ha senso. Ma invece farei 1. Più moderno.
  4. Lo userei se funziona. Si chiedono solo se può essere impostato su 6 secondi.

Grazie per il confronto L'unica cosa però è che il n. 1 non sembra essere economico! Non ho trovato alcun IC con funzione watchdog-timer con prezzi quantitativi inferiori a un dollaro, come ho già detto, mentre come probabilmente saprai, ci sono molti microcontrollori (per l'opzione n. 2) che sono inferiori a 0,50 USD.
boardbite,

2

Se il tuo circuito / dispositivo non controlla l'hardware critico per la vita, puoi probabilmente cavartela usando il cane da guardia interno. Altrimenti (o effettivamente, in ogni caso) dai un'occhiata a questi due grandi articoli di Jack Ganssle:

http://www.ganssle.com/watchdogs.htm

http://www.ganssle.com/articles/watchdogsredux.htm

A proposito, se non riesci a impostare il watchdog su un lungo intervallo, puoi provare l'approccio di svegliarti abbastanza spesso da dare un calcio al watchdog, ma eseguendo la misurazione completa / scrivendo i registri solo una volta ogni tanto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.