Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

De Watchdog Timer begrijpen: Hoe het microcontroller-ophangen voorkomt

Onderdelen en benodigdheden

  • Arduino UNO (1×)

Apps en online services

  • Arduino IDE

Over dit project

Wat als je microcontroller in een oneindige lus vastloopt? Normale troubleshooting: resetknop indrukken. Maar is dat praktisch als het constant gebeurt? Nee. Hier komt de Watchdog Timer (WDT) van pas.

„Een watchdog timer is een hardware-timer die automatisch een systeemreset genereert als de hoofdfunctie deze niet periodiek herlaadt. Vaak gebruikt om embedded devices te resetten die vastlopen door soft- of hardwarefouten.” (os.mbed.com/cookbook/WatchDog-Timer)

De hond voeden!

Als je een hond hebt, moet je hem regelmatig voeren. Vergeet je het één dag, bijt hij. De watchdog timer werkt hetzelfde.

De Watchdog Timer begrijpen: Hoe het microcontroller-ophangen voorkomt

In de loop() reset je de timer constant. De WDT wordt geladen met een waarde groter dan de maximale vertraging in je hoofdlus. Komt de code niet terug om de timer te resetten voordat hij op nul telt? Dan volgt een interrupt → processor reset. Zo beschermt de WDT tegen vastlopers.

Watchdog timer op Arduino UNO (ATmega328P)

De Watchdog Timer begrijpen: Hoe het microcontroller-ophangen voorkomt

Benodigde bibliotheek:

#include <avr/wdt.h>

Watchdog timer inschakelen

wdt_enable(WDT_RESET_TIJD);

Beschikbare time-outs: 15 ms, 30 ms, 60 ms, 120 ms, 250 ms, 500 ms, 1 s, 2 s, 4 s, 8 s.

De Watchdog Timer begrijpen: Hoe het microcontroller-ophangen voorkomt

Voorbeeld: wdt_enable(WDTO_4S); – WDT ingeschakeld met 4 seconden time-out.

Watchdog timer resetten

wdt_reset();

Plaats deze functie in loop(). Als je een grote delay() hebt die langer is dan de WDT-time-out, plaats wdt_reset() ervoor. Anders reset de MCU voordat de taak klaar is.

Watchdog timer uitschakelen

wdt_disable();

Voorbeeldcode

De sketch toont normale loop met wdt_reset() elke seconde, gevolgd door een oneindige lus while(1){} die de MCU zou laten hangen – maar de WDT reset na 4 seconden.

#include <avr/wdt.h>

void setup() {
  Serial.begin(9600);
  Serial.println("Setup started:");
  delay(2000);           // wacht op init
  wdt_enable(WDTO_4S);   // WDT aan, 4 s
}

void loop() {
  Serial.println("LOOP started!");
  for (int i = 0; i <= 5; i++) {
    Serial.print("Loop: ");
    Serial.print(i);
    Serial.println();
    delay(1000);
    wdt_reset();         // hond voeren
  }
  // oneindige lus → MCU zou hangen, maar WDT reset na 4 s
  while (1) {}
}

Output

De Watchdog Timer begrijpen: Hoe het microcontroller-ophangen voorkomt

De seriële monitor toont de loop 0–5, daarna herstart de MCU (setup draait weer) door de WDT-reset.

Feedback, vragen, discussie? Laat een reactie achter!

Code

Volledige sketch (bovenstaand).

Productieproces

  1. Insert moulding uitgelegd: Efficiëntie verhogen & kosten verlagen in multi-materiaal productie
  2. Prototyping uitgelegd: De cruciale validatiestap voor start-ups
  3. Lineaire motoren begrijpen: Van elektrische energie naar nauwkeurige lineaire beweging
  4. CNC Draaien Uitgelegd: Precisie Bewerking voor Hoogwaardige Onderdelen
  5. Gieterijen Begrijpen: Waar Metaal De Bouwstenen Van De Moderne Industrie Wordt
  6. Meertrapspompen begrijpen: functie, toepassingen en voordelen
  7. Persvoeders: Werking, Functies en Industriële Toepassingen
  8. Dompelpompen begrijpen: werking en belangrijkste voordelen
  9. Drankrobots begrijpen: technologie, automatisering en rol in drankenindustrie
  10. Mechanische Persen Uitgelegd: Functie, Typen en Industriële Toepassingen
  11. Servomotoren Uitgelegd: Hoe Ze Werken en Waarom Ze Belangrijk Zijn