WeMOS Watchdog
WeMOS WiFi Processor | |
---|---|
WeMOS | Server Connection - Simpel Server - Flere SSID - ESP8266 - Watchdog - Interrupt |
Anvendelse | LED-eksempel - AD-eksempel - Mail - POST metode - Web Publicering |
En Watchdog er et programmeringsprincip man kan bygge ind i et styresystem. Watchdogen er lavet til at forhindre at noget kode komme til at gå fast i et uendeligt loop.
Watchdogen består af en form for timer, der har muligheden for at resette softwaren, og få den til at starte forfra.
Princippet er at den ikke skal komme dertil hvor den resetter softwaren, så der skal være en måde at forhindre det på, og det er ved at lave en watchdog reset, eller som man kalder det på dansk "man skal klappe hunden". Det man i princippet gør i sin kode er at man gør styresystemet opmærksom på, at man stadig laver noget fornuftigt i koden.
Principper til at klappe hunden
Det bedste princip er at man laver sin kode, så man ikke har behov for at tænke på det. I Arduino-miljøet generelt, og specielt i WeMOS er det at man skriver softwaren, så man kommer hurtigt igennem loopet - at man tjekker om de forskellige ting skal serviceres, gør det der er nødvendigt, og så går videre, så koden kun laver det der er aktivt nødvendigt og aldrig venter på at noget sker. På denne måde vil man, hver gang man kommer ud af loop() få "klappet hunden", og på den måde ikke opleve at watchdogen resetter.
Det ovennævnte princip hedder polling, og er med uddybet i denne kilde[1].
En anden mulighed er - hvis man ikke syntes man kan undgå et langt vente-loop, at man tilføjer kode som klapper hunden. Her er der forskellige muligheder som vist herunder:
delay(0); // Laver ikke et delay, men klapper hunden - man kan også vælge at delaye en tid.
yield(); // Gør det samme som delay(0);
wdt_reset(); // Klapper bare hunden - kræver #include <avr/wdt.h>
Referencer
- ↑ htx-arduino.dk med forklaring af polling, under Tid og Samtidighed