Inhoudsopgave:
- Stap 1: Wat is deze Watchdog-timer?
- Stap 2: Hoe de Watchdog-timer inschakelen?
- Stap 3: Houd uw programma actief
- Stap 4: Voorbeeldgebruik
- Stap 5: Watchdog Timer problemen
- Stap 6: Geniet ervan
Video: De Arduino Hang Guardian - Arduino Watchdog Timer-zelfstudie - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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?
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?
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
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
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
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:
KS-Tea-Timer: 4 stappen
KS-Tea-Timer: SituatieU bent b.v. in een kantoor en je wilt thee zetten zoals het hoort (bijv. groene thee 2 minuten, zwarte thee 5 minuten…), maar soms mis je gewoon het juiste moment om het brouwen te stoppen en je thee uit de heet water. Het is erg
Stappenmotor met D Flip Flops en 555 Timer; het eerste deel van het circuit de 555 Timer: 3 stappen
Stappenmotor met D-flip-flops en 555-timer; het eerste deel van het circuit de 555-timer: de stappenmotor is een gelijkstroommotor die in discrete stappen beweegt. Het wordt vaak gebruikt in printers en zelfs robotica. Ik zal dit circuit in stappen uitleggen. Het eerste deel van het circuit is een 555 tijdopnemer. Het is de eerste afbeelding (zie hierboven) met een 555-chip met
AVR-microcontroller. LED's Flasher met behulp van timer. Timers worden onderbroken. Timer CTC-modus: 6 stappen
AVR-microcontroller. LED's Flasher met behulp van timer. Timers worden onderbroken. Timer CTC Mode: Hallo allemaal! Timers is een belangrijk begrip op het gebied van elektronica. Elk elektronisch onderdeel werkt op tijdbasis. Deze tijdbasis helpt om al het werk gesynchroniseerd te houden. Alle microcontrollers werken op een vooraf gedefinieerde klokfrequentie, de
NE555-timer - De NE555-timer configureren in een astabiele configuratie: 7 stappen
NE555-timer | De NE555-timer configureren in een stabiele configuratie: De NE555-timer is een van de meest gebruikte IC's in de elektronicawereld. Het heeft de vorm van DIP 8, wat betekent dat het 8 pinnen heeft
The Pi Guardian: 6 stappen (met afbeeldingen)
The Pi Guardian: Heb je ooit die ene persoon willen vangen die je Halloween-snoepjes blijft stelen? Of wat dacht je van die vervelende huisgenoot die je koelkast niet met rust laat? Door een Raspberry Pi 3, Pi Camera en PIR-sensor te gebruiken, is dat nu allemaal mogelijk. eenvoudig