Challenge - 5 Problems
Watchdog Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate2:00remaining
Watchdog Timer Feeding Frequency
Consider a watchdog timer that resets the system if not fed within 1000 milliseconds. What will be the output of the following code snippet if the feeding interval is set to 1200 milliseconds?
Embedded C
#include <stdio.h> #include <stdbool.h> bool watchdog_fed = false; void feed_watchdog() { watchdog_fed = true; } void watchdog_check(int interval_ms) { if (interval_ms > 1000 && !watchdog_fed) { printf("System Reset Triggered\n"); } else { printf("System Running Normally\n"); } watchdog_fed = false; } int main() { watchdog_check(1200); feed_watchdog(); return 0; }
Attempts:
2 left
💡 Hint
Think about whether the watchdog is fed within the allowed time interval.
✗ Incorrect
The watchdog expects to be fed within 1000 ms. Feeding at 1200 ms is too late, so the system triggers a reset.
🧠 Conceptual
intermediate1:30remaining
Purpose of Feeding the Watchdog
Why is it important to feed (kick) the watchdog timer regularly in embedded systems?
Attempts:
2 left
💡 Hint
Think about what happens if the watchdog is not fed.
✗ Incorrect
Feeding the watchdog prevents it from resetting the system, which happens if the software hangs or malfunctions.
🔧 Debug
advanced2:30remaining
Identify the Bug in Watchdog Feeding Code
What is the bug in the following code that causes the watchdog to reset unexpectedly?
Embedded C
void feed_watchdog() {
// Missing actual feeding command
}
int main() {
while(1) {
// supposed to feed watchdog here
feed_watchdog();
// other tasks
}
return 0;
}Attempts:
2 left
💡 Hint
Check what the feed_watchdog function does internally.
✗ Incorrect
The function feed_watchdog is empty and does not reset the watchdog timer, so the watchdog triggers a reset.
📝 Syntax
advanced1:30remaining
Correct Feeding Syntax for Watchdog Timer
Which of the following code snippets correctly feeds the watchdog timer assuming the hardware register is WDT_RESET = 1?
Attempts:
2 left
💡 Hint
Remember the difference between assignment and comparison operators in C.
✗ Incorrect
Assignment uses a single '=', so 'WDT_RESET = 1;' correctly feeds the watchdog.
🚀 Application
expert3:00remaining
Calculate Watchdog Feeding Interval
An embedded system's watchdog timer resets if not fed within 5000 clock cycles. The system clock runs at 1 MHz. What is the maximum time in milliseconds allowed between feeding the watchdog?
Attempts:
2 left
💡 Hint
Calculate time = cycles / clock frequency.
✗ Incorrect
At 1 MHz, 1 cycle = 1 microsecond. 5000 cycles = 5000 microseconds = 5 milliseconds.