Embedded systemen en firmware
Waarom is het niet goed om het resetten (kicken) van de watchdogtimer onvoorwaardelijk uit te voeren in een timerinterrupthandler die elke 1 ms optreedt?
- AOmdat een watchdog volgens afspraak niet vanuit een interrupt mag worden aangeraakt
- BOmdat de interrupt blijft werken, ook als het hoofdprogramma vastloopt in bijvoorbeeld een oneindige lus, zodat de watchdog de afwijking niet meer kan detecteren
- COmdat de watchdog kapotgaat als hij elke 1 ms wordt gekickt
Antwoord en toelichting tonen
Antwoord: B. Omdat de interrupt blijft werken, ook als het hoofdprogramma vastloopt in bijvoorbeeld een oneindige lus, zodat de watchdog de afwijking niet meer kan detecteren
Een watchdog is een mechanisme dat de microcontroller reset als er niet binnen een vastgestelde tijd wordt gekickt, zodat hij herstelt van vastlopen. Een timerinterrupt blijft echter werken ook als het hoofdprogramma stilstaat, dus onvoorwaardelijk kicken daarin maakt het onmogelijk te merken dat het systeem stilstaat. Het is de basisregel om te controleren dat de hoofdlus en elke taak normaal een ronde hebben voltooid en alleen te kicken wanneer alle aanwezig zijn.