Sommario:

L'Arduino Hang Guardian - Tutorial Arduino Watchdog Timer: 6 passaggi
L'Arduino Hang Guardian - Tutorial Arduino Watchdog Timer: 6 passaggi

Video: L'Arduino Hang Guardian - Tutorial Arduino Watchdog Timer: 6 passaggi

Video: L'Arduino Hang Guardian - Tutorial Arduino Watchdog Timer: 6 passaggi
Video: Project Troubleshooting | Install Lights in RC Car | Part 3 2024, Novembre
Anonim
Image
Image

Ciao a tutti, Succede a tutti noi. Costruisci un progetto, connetti con entusiasmo tutti i sensori e, all'improvviso, Arduino si blocca e nessun input viene elaborato.

"Cosa sta succedendo?", chiederai e inizierai a scavare nel tuo codice, solo per realizzare che sei bloccato in un ciclo infinito. Grazie a Dio l'Arduino era sul tuo banco e non in un luogo remoto.

Oggi vedremo come possiamo usare il timer watchdog su Arduino per evitare che ciò accada.

Passaggio 1: cos'è questo timer per cani da guardia?

Come abilitare il timer del watchdog?
Come abilitare il timer del watchdog?

Il timer watchdog Arduino, come suggerisce il nome, è un timer che funziona separatamente dalla CPU principale sulla scheda. Questo timer può essere utilizzato per controllare periodicamente lo stato della scheda e in circostanze in cui la scheda è rimasta bloccata in un loop software o si è bloccata a causa di un guasto hardware, il timer watchdog può ripristinare Arduino e farlo ricominciare da capo.

Per impostazione predefinita, quando non è in uso, questo timer è disabilitato su tutti i progetti e solo quando lo abilitiamo, dobbiamo assicurarci di dirgli periodicamente di non ripristinare la nostra scheda se funziona ancora come previsto.

Per poter utilizzare il timer watchdog, dobbiamo prima includere il file avr/wdt.h nel nostro sketch Arduino. Questa è la libreria standard che contiene le azioni del watchdog.

Passaggio 2: come abilitare il timer del watchdog?

Come abilitare il timer del watchdog?
Come abilitare il timer del watchdog?
Come abilitare il timer del watchdog?
Come abilitare il timer del watchdog?

Per abilitare il timer utilizziamo la funzione “wdt_enable” dove dobbiamo passare nell'intervallo di soglia al quale la scheda verrà resettata. A seconda del nostro caso d'uso, questo può variare da 15 millisecondi a un massimo di 8 secondi nelle impostazioni predefinite contenute nella libreria watchdog.

SOGLIA - NOME COSTANTE

15 ms WDTO_15MS 30 ms WDTO_30MS 60 ms WDTO_60MS 120 ms WDTO_120MS 250 ms WDTO_250MS 500 ms WDTO_500MS 1s WDTO_1S 2s WDTO_2S 4s WDTO_4S 8s WDTO_8S

Passaggio 3: mantieni attivo il tuo programma

Mantieni attivo il tuo programma
Mantieni attivo il tuo programma

Ora, con il timer abilitato, per evitare che resetti il nostro Arduino dobbiamo chiamare periodicamente la funzione "wdt_reset" per ripristinare il timer del watchdog prima che scada l'intervallo di soglia.

Quando si sceglie un intervallo di ripristino, è fondamentale prendere in considerazione qualsiasi operazione lunga come la lettura o l'invio di dati o il collegamento a sensori esterni. La soglia di ripristino deve essere almeno una volta e mezza maggiore di questi tempi per evitare ripristini accidentali.

Passaggio 4: esempio di utilizzo

Esempio di utilizzo
Esempio di utilizzo
Esempio di utilizzo
Esempio di utilizzo
Esempio di utilizzo
Esempio di utilizzo

Nel programma di esempio che puoi scaricare qui, abbiamo prima impostato il timer di watchdog con un intervallo di ripristino di 4 secondi. Poi per sapere che siamo nella funzione setup facciamo lampeggiare un led per 3 volte velocemente e poi nel loop principale prima resettiamo il timer, accendiamo un led con intervalli progressivamente più lunghi e poi lo spegniamo. Il ciclo successivo ripristina nuovamente il timer fino a quando il tempo di accensione non supera i 4 secondi.

Quando ciò accade, il timer di watchdog ripristina la scheda e l'impostazione viene eseguita di nuovo.

Passaggio 5: problemi con il timer di sorveglianza

Un possibile problema con il timer del watchdog, a seconda del bootloader del tuo Arduino, è che se il valore del timer del watchdog è troppo basso e il bootloader non ripristina il timer durante il caricamento di nuovo codice, potresti finire per danneggiare la tua scheda Arduino in un modo che sarà sempre bloccato nella fase di avvio. Il bootloader tenterà di avviarsi, ma il timer continuerà a reimpostare la scheda, senza mai avviarla correttamente. Per evitare problemi come questo, assicurati di utilizzare sempre intervalli di soglia di 2 secondi o più.

Passaggio 6: divertiti

Godere
Godere

Se hai un esempio di dove hai utilizzato il timer del watchdog in un progetto reale, fammelo sapere nei commenti, assicurati di mettere mi piace al video e non dimenticare di iscriverti.

Saluti e grazie per aver letto/guardato!

Consigliato: