Bird
Raised Fist0
Embedded Cprogramming~20 mins

Watchdog timer operation in Embedded C - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Watchdog Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Watchdog Timer Reset Behavior
What will be the output of the following embedded C code snippet simulating a watchdog timer reset?
Embedded C
#include <stdio.h>
#include <stdbool.h>

bool watchdog_reset = false;

void watchdog_feed() {
    watchdog_reset = true;
}

void watchdog_check() {
    if (!watchdog_reset) {
        printf("System Reset by Watchdog\n");
    } else {
        printf("System Running Normally\n");
    }
}

int main() {
    watchdog_reset = true;
    watchdog_feed();
    watchdog_check();
    watchdog_reset = false;
    watchdog_check();
    return 0;
}
A
System Running Normally
System Reset by Watchdog
B
System Reset by Watchdog
System Reset by Watchdog
C
System Running Normally
System Running Normally
D
System Reset by Watchdog
System Running Normally
Attempts:
2 left
💡 Hint
Watchdog resets the system if it is not fed (reset) in time.
🧠 Conceptual
intermediate
1:30remaining
Purpose of a Watchdog Timer
What is the main purpose of a watchdog timer in embedded systems?
ATo manage power consumption by shutting down peripherals
BTo increase the processing speed of the CPU
CTo store data persistently during power loss
DTo monitor system health and reset the system if it becomes unresponsive
Attempts:
2 left
💡 Hint
Think about what happens when a system freezes or crashes.
🔧 Debug
advanced
2:30remaining
Identify the Bug in Watchdog Feeding Code
What is the bug in the following watchdog feeding code snippet?
Embedded C
void feed_watchdog() {
    // Missing watchdog reset sequence
    // supposed to reset the watchdog timer here
}

int main() {
    while(1) {
        feed_watchdog();
        // Other tasks
    }
    return 0;
}
AThe while loop will never execute
BThe watchdog timer is never reset, causing system reset
CThe function feed_watchdog() causes a memory leak
DThe program will compile but never start
Attempts:
2 left
💡 Hint
Feeding the watchdog means resetting its timer to prevent reset.
📝 Syntax
advanced
1:30remaining
Correct Watchdog Timer Initialization Syntax
Which option correctly initializes a watchdog timer with a timeout of 2 seconds in embedded C?
AWDT_Init(2000);
BWDT_Init(2000ms);
CWDT_Init(2);
DWDT_Init("2s");
Attempts:
2 left
💡 Hint
Timeouts are usually given in milliseconds as integers.
🚀 Application
expert
3:00remaining
Watchdog Timer Use Case Scenario
In an embedded system controlling a robotic arm, the watchdog timer is set to 1 second. The main control loop takes 1.5 seconds to complete one cycle. What will happen and why?
AThe watchdog will extend its timeout automatically to 2 seconds
BThe system will run normally because the watchdog timer is disabled during the control loop
CThe watchdog will reset the system because the control loop exceeds the watchdog timeout
DThe system will ignore the watchdog timer because the control loop is critical
Attempts:
2 left
💡 Hint
Watchdog timers reset the system if not fed before timeout.

Practice

(1/5)
1. What is the main purpose of a watchdog timer in embedded systems?
easy
A. To provide power to the microcontroller
B. To increase the processing speed of the CPU
C. To reset the system if the program stops responding
D. To store data temporarily during program execution

Solution

  1. Step 1: Understand watchdog timer function

    A watchdog timer monitors the program to detect if it stops responding or freezes.
  2. Step 2: Identify watchdog timer action

    If the program fails to reset the watchdog timer in time, the watchdog resets the system to recover from the freeze.
  3. Final Answer:

    To reset the system if the program stops responding -> Option C
  4. Quick Check:

    Watchdog timer resets system on freeze = D [OK]
Hint: Watchdog resets system if program hangs [OK]
Common Mistakes:
  • Thinking watchdog speeds up CPU
  • Confusing watchdog with memory storage
  • Assuming watchdog provides power
2. Which of the following is the correct way to reset (kick) a watchdog timer in embedded C?
easy
A. watchdog_reset();
B. reset_watchdog();
C. kick_watchdog();
D. wdt_reset();

Solution

  1. Step 1: Recall standard watchdog reset function

    In many embedded C libraries, the function to reset the watchdog timer is wdt_reset().
  2. Step 2: Check other options

    Other options like watchdog_reset(), reset_watchdog(), and kick_watchdog() are not standard function names and will cause errors.
  3. Final Answer:

    wdt_reset(); -> Option D
  4. Quick Check:

    Standard watchdog reset function = wdt_reset() [OK]
Hint: Use wdt_reset() to reset watchdog in embedded C [OK]
Common Mistakes:
  • Using non-standard function names
  • Forgetting parentheses in function call
  • Confusing reset with initialization
3. What will be the output of the following code snippet if the watchdog is not reset within 5 seconds?
void main() {
  setup_watchdog(5); // 5 seconds timeout
  while(1) {
    // No watchdog reset here
  }
  printf("Running");
}
medium
A. The program prints 'Running' continuously
B. The program resets after 5 seconds and never prints 'Running'
C. The program prints 'Running' once and stops
D. Compilation error due to missing watchdog reset

Solution

  1. Step 1: Analyze watchdog setup and loop

    The watchdog is set with a 5-second timeout, but inside the infinite loop, the watchdog reset function is never called.
  2. Step 2: Understand watchdog behavior on timeout

    Since the watchdog is not reset, after 5 seconds it triggers a system reset. The printf statement is never reached.
  3. Final Answer:

    The program resets after 5 seconds and never prints 'Running' -> Option B
  4. Quick Check:

    No watchdog reset causes reset before printf = A [OK]
Hint: No watchdog reset means system resets before print [OK]
Common Mistakes:
  • Assuming printf runs before reset
  • Thinking program runs normally without reset
  • Confusing compile error with runtime reset
4. Identify the error in this watchdog usage code snippet:
void main() {
  setup_watchdog(10);
  while(1) {
    if (some_condition) {
      wdt_reset();
    }
  }
}
medium
A. Watchdog is reset only conditionally, may cause unexpected reset
B. Watchdog timeout is too long for embedded systems
C. Missing initialization of watchdog timer
D. Incorrect function name for watchdog reset

Solution

  1. Step 1: Review watchdog reset condition

    The watchdog reset wdt_reset() is called only if some_condition is true, so it may not be called regularly.
  2. Step 2: Understand watchdog requirement

    Watchdog must be reset regularly regardless of conditions to prevent system reset. Conditional reset risks unexpected resets.
  3. Final Answer:

    Watchdog is reset only conditionally, may cause unexpected reset -> Option A
  4. Quick Check:

    Conditional watchdog reset risks reset = C [OK]
Hint: Always reset watchdog regularly, not conditionally [OK]
Common Mistakes:
  • Ignoring conditional reset risk
  • Thinking timeout length is error
  • Assuming missing initialization
5. You want to use a watchdog timer to reset your embedded system if it freezes, but only after 3 seconds of no reset. Which approach correctly implements this behavior?
hard
A. Initialize watchdog with 3 seconds timeout and call wdt_reset() regularly within 3 seconds
B. Initialize watchdog with 10 seconds timeout and call wdt_reset() every 5 seconds
C. Initialize watchdog with 1 second timeout and call wdt_reset() every 4 seconds
D. Do not initialize watchdog and reset system manually every 3 seconds

Solution

  1. Step 1: Set watchdog timeout to desired reset delay

    To reset after 3 seconds of no reset, watchdog timeout must be set to 3 seconds.
  2. Step 2: Reset watchdog regularly within timeout

    Call wdt_reset() regularly before 3 seconds elapse to prevent reset during normal operation.
  3. Final Answer:

    Initialize watchdog with 3 seconds timeout and call wdt_reset() regularly within 3 seconds -> Option A
  4. Quick Check:

    Timeout = 3s and regular reset = B [OK]
Hint: Timeout matches reset interval; reset watchdog before timeout [OK]
Common Mistakes:
  • Setting timeout longer than reset interval
  • Resetting watchdog less frequently than timeout
  • Not initializing watchdog at all
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard