Innholdsfortegnelse:

The Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 trinn
The Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 trinn

Video: The Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 trinn

Video: The Arduino Hang Guardian - Arduino Watchdog Timer Tutorial: 6 trinn
Video: The Arduino hang guardian - Arduino watchdog timer tutorial 2024, November
Anonim
Image
Image

Hei alle sammen, Det skjer med oss alle. Du bygger et prosjekt, kobler entusiastisk alle sensorene, og plutselig henger Arduino og ingen input blir behandlet.

"Hva skjer?", Spør du og begynner å grave gjennom koden din, bare for å innse at du har sittet fast i en uendelig sløyfe. Takk og lov Arduino var på benken din og ikke et fjerntliggende sted.

I dag skal vi se på hvordan vi kan bruke vakthundstimeren på Arduino for å forhindre at dette skjer.

Trinn 1: Hva er denne vakthundstimeren?

Hvordan aktiverer jeg Watchdog Timer?
Hvordan aktiverer jeg Watchdog Timer?

Arduino watchdog -timeren, som navnet tilsier, er en timer som kjøres separat fra hoved -CPU på brettet. Denne timeren kan brukes til periodisk å kontrollere brettets tilstand, og under omstendigheter der brettet ble sittende fast i en programvaresløyfe eller ble sittende fast på grunn av maskinvarefeil, kan vekterhundtimeren tilbakestille Arduino og få den til å starte på nytt.

Som standard, når denne timeren ikke er i bruk, er den deaktivert på alle prosjekter, og bare når vi aktiverer den, må vi sørge for å gi den jevnlig beskjed om ikke å tilbakestille brettet hvis det fortsatt fungerer som forventet.

For å kunne bruke vakthundstimeren må vi først inkludere avr/wdt.h -filen i vår Arduino -skisse. Dette er standardbiblioteket som inneholder vakthundens handlinger.

Trinn 2: Hvordan aktivere Watchdog -timeren?

Hvordan aktiverer jeg Watchdog Timer?
Hvordan aktiverer jeg Watchdog Timer?
Hvordan aktiverer jeg Watchdog Timer?
Hvordan aktiverer jeg Watchdog Timer?

For å aktivere timeren bruker vi funksjonen "wdt_enable" der vi må passere i terskelintervallet hvor tavlen vil bli tilbakestilt. Avhengig av vårt brukstilfelle kan dette være alt fra 15 millisekunder til opptil 8 sekunder i forhåndsdefinerte innstillinger som finnes i vakthundens bibliotek.

TRESHOLD - KONSTANT NAVN

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

Trinn 3: Hold programmet kjørende

Hold programmet kjørende
Hold programmet kjørende

Når timeren er aktivert, må vi med jevne mellomrom ringe funksjonen “wdt_reset” for å forhindre at Arduino -enheten tilbakestiller Arduino før terskelintervallet utløper.

Når du velger et tilbakestillingsintervall, er det avgjørende at vi tar i betraktning enhver langvarig operasjon som å lese eller sende data eller koble til eksterne sensorer. Tilbakestillingsgrensen bør være minst en og en halv ganger større enn disse tider for å forhindre utilsiktet tilbakestilling.

Trinn 4: Eksempel på bruk

Eksempel på bruk
Eksempel på bruk
Eksempel på bruk
Eksempel på bruk
Eksempel på bruk
Eksempel på bruk

I eksempelprogrammet du kan laste ned her, konfigurerte vi først vekterhundtimeren med et tilbakestillingsintervall på 4 sekunder. For å vite at vi er i oppsettsfunksjonen, blinker vi en LED 3 ganger raskt, og deretter i hovedsløyfen nullstiller vi først timeren, tenner en LED med gradvis lengre intervaller, og deretter slår vi den av. Den neste sløyfen tilbakestiller timeren igjen til opplystiden er lengre enn 4 sekunder.

Når dette skjer, nullstiller vekterhundtimeren brettet og oppsettet utføres på nytt.

Trinn 5: Problemer med Watchdog Timer

Et mulig problem med watchdog -timeren, avhengig av bootloader på Arduino er at hvis watchdog timer -verdien er for lav og bootloader ikke tilbakestiller timeren når du laster opp ny kode, kan du ende opp med å skade Arduino -kortet på en måte som den vil alltid sitte fast i oppstartsfasen. Oppstartslasteren vil prøve å starte, men timeren vil fortsette å tilbakestille brettet, og aldri la det starte ordentlig. For å forhindre problemer som dette, må du alltid bruke terskelintervaller på 2 sekunder eller mer.

Trinn 6: Nyt

Nyt
Nyt

Hvis du har et eksempel på hvor du har brukt vakthundens timer i et ekte prosjekt, gi meg beskjed i kommentarfeltet, sørg for å like videoen og ikke glem å abonnere.

Hei og takk for at du leste/så på!

Anbefalt: