Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Entender el Watchdog Timer: Cómo evita bloqueos del microcontrolador

Componentes y suministros

Aplicaciones y servicios en línea

Sobre el proyecto

¿Qué pasa cuando tu microcontrolador se queda atrapado en un bucle infinito? ¿Hay casos donde el microcontrolador se cuelga o bloquea durante una tarea? ¿Cuáles son los métodos normales de solución? Botón de Reset, ¿verdad? ¿Es práctico pulsar el botón cada vez? 😕. ¿Qué tal un dispositivo que haga esa tarea automáticamente? Suena bien. ¡Genial! 🙂.

¡Sí! Ahora hablamos de un dispositivo que ya está dentro del microcontrolador: el Watchdog Timer (WDT).

Un watchdog timer (WDT) es un temporizador hardware que genera automáticamente un reinicio del sistema si el programa principal no lo «alimenta» periódicamente. Se usa a menudo para reiniciar automáticamente un dispositivo embebido que se cuelga por fallo de software o hardware. (os.mbed.com/cookbook/WatchDog-Timer).

¡Alimenta al perro!

Si tienes un perro en casa, debes alimentarlo a intervalos regulares. Si un día no lo alimentas, ¡te morderá! Así funciona el watchdog timer.

Entender el Watchdog Timer: Cómo evita bloqueos del microcontrolador

Tenemos una parte principal en el programa que se repite (loop). Habilitamos el watchdog timer con un valor inicial mayor que el retardo total del programa principal. Cada vez el programa principal reinicia este temporizador. Si en algún caso el programa principal no vuelve a reiniciar el temporizador antes de que cuente hasta cero, se genera una interrupción que reinicia el procesador. Así el watchdog protege al microcontrolador de bloqueos.

Así que probemos el watchdog timer en Arduino ;)

El Arduino UNO usa el microcontrolador ATMEGA328P.

Entender el Watchdog Timer: Cómo evita bloqueos del microcontrolador

Librería Watchdog timer:

#include <avr/wdt.h>

Esta librería es necesaria para usar el watchdog timer en Arduino.

Habilitar Watchdog timer

wdt_enable(WDT Reset Timer);

Para habilitar el watchdog timer, WDT RESET TIMER varía desde 15 ms hasta 8 s.

Entender el Watchdog Timer: Cómo evita bloqueos del microcontrolador

Ejemplo: wdt_enable(WDTO_4S); – Habilita watchdog timer para 4 segundos.

Reiniciar Watchdog timer

wdt_reset();

Esta función se usa para reiniciar el watchdog timer. Se coloca dentro de loop(). Si tu programa usa un delay() mayor que el umbral del watchdog, añade la función de reinicio antes de ese delay. De lo contrario, reiniciará el microcontrolador antes de completar la tarea.

Deshabilitar Watchdog timer

wdt_disable();

Código de ejemplo

#include <avr/wdt.h>

void setup() {
  Serial.begin(9600);
  Serial.println("Setup started:");
  // Retardo antes de habilitar WDT para completar tareas iniciales
  delay(2000);
  wdt_enable(WDTO_4S);
}

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(); // alimentar al perro cada segundo
  }
  // Bucle infinito para colgar el MCU
  while (1) {}
}

Salida

Entender el Watchdog Timer: Cómo evita bloqueos del microcontrolador

Envía tus comentarios, preguntas, debate en la sección de comentarios.

Código completo

#include <avr/wdt.h>

void setup() {
  Serial.begin(9600);
  Serial.println("Setup started:");
  delay(2000);
  wdt_enable(WDTO_4S);
}

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();
  }
  while (1) {}
}

Proceso de manufactura

  1. Moldeo por inserción explicado: Aumente la eficiencia y reduzca costes en producción multi-material
  2. Prototipado Explicado: El Paso Clave de Validación para Startups
  3. Entendiendo los Motores Lineales: De Energía Eléctrica a Movimiento Lineal Preciso
  4. Torneado CNC Explicado: Mecanizado de Precisión para Piezas de Alta Calidad
  5. Entendiendo las Fundiciones: Donde el Metal se Convierte en Bloques de Construcción de la Industria Moderna
  6. Entendiendo las Bombas Multietapa: Funcionamiento, Usos y Beneficios
  7. Entendiendo los Alimentadores de Prensa: Mecanismo, Función y Aplicaciones Industriales
  8. Comprender las Bombas Sumergibles: Funcionamiento y Beneficios Clave
  9. Comprender los Robots de Bebidas: Tecnología, Automatización y su Papel en la Industria de Bebidas
  10. Prensas Mecánicas Explicadas: Función, Tipos y Aplicaciones Industriales
  11. Motores servo: funcionamiento, tipos y por qué son importantes