Inhoudsopgave:

De Arduino Hang Guardian - Arduino Watchdog Timer-zelfstudie - Ajarnpa
De Arduino Hang Guardian - Arduino Watchdog Timer-zelfstudie - Ajarnpa

Video: De Arduino Hang Guardian - Arduino Watchdog Timer-zelfstudie - Ajarnpa

Video: De Arduino Hang Guardian - Arduino Watchdog Timer-zelfstudie - Ajarnpa
Video: The Arduino hang guardian - Arduino watchdog timer tutorial 2024, Juli-
Anonim
Image
Image

Hallo iedereen, Het overkomt ons allemaal. Je bouwt een project, sluit enthousiast alle sensoren aan en ineens hangt de Arduino en wordt er geen invoer verwerkt.

"Wat is er aan de hand?", vraag je en begin je door je code te graven, alleen om te beseffen dat je vastzit in een oneindige lus. Godzijdank was de Arduino op je bank en niet op een afgelegen locatie.

Vandaag zullen we bekijken hoe we de watchdog-timer op de Arduino kunnen gebruiken om dit te voorkomen.

Stap 1: Wat is deze Watchdog-timer?

Hoe de Watchdog-timer inschakelen?
Hoe de Watchdog-timer inschakelen?

De Arduino watchdog-timer, zoals de naam al aangeeft, is een timer die afzonderlijk van de hoofd-CPU op het bord loopt. Deze timer kan worden gebruikt om periodiek de staat van het bord te controleren en in omstandigheden waarin het bord vast kwam te zitten in een softwarelus of vast kwam te zitten door een hardwarestoring, kan de watchdog-timer de Arduino resetten en hem helemaal opnieuw laten beginnen.

Wanneer deze timer niet in gebruik is, is deze standaard uitgeschakeld voor alle projecten en alleen wanneer we hem inschakelen, moeten we ervoor zorgen dat we hem regelmatig vertellen dat we ons bord niet moeten resetten als het nog steeds werkt zoals verwacht.

Om de watchdog-timer te kunnen gebruiken, moeten we eerst het avr/wdt.h-bestand in onze Arduino-schets opnemen. Dit is de standaardbibliotheek die de waakhondacties bevat.

Stap 2: Hoe de Watchdog-timer inschakelen?

Hoe de Watchdog-timer inschakelen?
Hoe de Watchdog-timer inschakelen?
Hoe de Watchdog-timer inschakelen?
Hoe de Watchdog-timer inschakelen?

Om de timer in te schakelen, gebruiken we de functie "wdt_enable" waar we het drempelinterval moeten passeren waarop het bord wordt gereset. Afhankelijk van onze gebruikssituatie kan dit variëren van 15 milliseconden tot maximaal 8 seconden in vooraf gedefinieerde instellingen die zijn opgenomen in de watchdog-bibliotheek.

DREMPEL - CONSTANTE NAAM

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

Stap 3: Houd uw programma actief

Houd uw programma draaiende
Houd uw programma draaiende

Nu, met de timer ingeschakeld, moeten we, om te voorkomen dat onze Arduino wordt gereset, periodiek de "wdt_reset" -functie aanroepen om de watchdog-timer te resetten voordat het drempelinterval verloopt.

Bij het kiezen van een reset-interval is het van cruciaal belang dat we rekening houden met langdurige handelingen, zoals het lezen of verzenden van gegevens of het verbinden met externe sensoren. De resetdrempel moet minstens anderhalf keer groter zijn dan deze tijden om onbedoelde resets te voorkomen.

Stap 4: Voorbeeldgebruik

Voorbeeldgebruik
Voorbeeldgebruik
Voorbeeldgebruik
Voorbeeldgebruik
Voorbeeldgebruik
Voorbeeldgebruik

In het voorbeeldprogramma dat je hier kunt downloaden hebben we eerst de watchdog timer ingesteld met een reset interval van 4 seconden. Om te weten dat we in de setup-functie zijn, laten we een LED 3 keer snel knipperen en vervolgens in de hoofdlus stellen we eerst de timer opnieuw in, lichten een LED op met steeds langere intervallen en zetten hem vervolgens uit. De volgende lus stelt de timer opnieuw in totdat de oplichttijd langer is dan 4 seconden.

Wanneer dit gebeurt, stelt de watchdog-timer het bord opnieuw in en wordt de setup opnieuw uitgevoerd.

Stap 5: Watchdog Timer problemen

Een mogelijk probleem met de watchdog-timer, afhankelijk van de bootloader van uw Arduino, is dat als de watchdog-timerwaarde te laag is en de bootloader de timer niet reset bij het uploaden van nieuwe code, u uw Arduino-bord op een manier kunt beschadigen die het zal altijd vastlopen in de opstartfase. De bootloader zal proberen te starten, maar de timer blijft het bord resetten, waardoor het nooit goed kan starten. Om dit soort problemen te voorkomen, moet u ervoor zorgen dat u altijd drempelintervallen van 2 seconden of meer gebruikt.

Stap 6: Geniet ervan

Genieten van
Genieten van

Als je een voorbeeld hebt van waar je de watchdog-timer hebt gebruikt in een echt project, laat het me dan weten in de reacties, zorg ervoor dat je de video leuk vindt en vergeet niet te abonneren.

Proost en bedankt voor het lezen/kijken!

Aanbevolen: