Tabla de contenido:

The Arduino Hang Guardian - Tutorial del temporizador de vigilancia de Arduino: 6 pasos
The Arduino Hang Guardian - Tutorial del temporizador de vigilancia de Arduino: 6 pasos

Video: The Arduino Hang Guardian - Tutorial del temporizador de vigilancia de Arduino: 6 pasos

Video: The Arduino Hang Guardian - Tutorial del temporizador de vigilancia de Arduino: 6 pasos
Video: Защита от зависания Arduino — руководство по сторожевому таймеру Arduino 2024, Noviembre
Anonim
Image
Image

Hola a todos, Nos pasa a todos. Construye un proyecto, conecta con entusiasmo todos los sensores y, de repente, el Arduino se cuelga y no se procesa ninguna entrada.

"¿Qué está pasando?", Preguntarás y comenzarás a buscar en tu código, solo para darte cuenta de que te has quedado atascado en un bucle infinito. Gracias a Dios, el Arduino estaba en tu banco y no en una ubicación remota.

Hoy, veremos cómo podemos usar el temporizador de vigilancia en Arduino para evitar que esto suceda.

Paso 1: ¿Qué es este temporizador de vigilancia?

¿Cómo habilitar el temporizador de vigilancia?
¿Cómo habilitar el temporizador de vigilancia?

El temporizador de vigilancia de Arduino, como su nombre lo indica, es un temporizador que se ejecuta por separado de la CPU principal en la placa. Este temporizador se puede usar para verificar periódicamente el estado de la placa y, en circunstancias en las que la placa se atascó en un bucle de software o se atascó debido a una falla de hardware, el temporizador de vigilancia puede reiniciar el Arduino y hacer que comience de nuevo.

De forma predeterminada, cuando no está en uso, este temporizador está deshabilitado en todos los proyectos y solo cuando lo habilitamos, debemos asegurarnos de decirle periódicamente que no reinicie nuestra placa si todavía está funcionando como se esperaba.

Para poder usar el temporizador de vigilancia, primero debemos incluir el archivo avr / wdt.h en nuestro boceto de Arduino. Esta es la biblioteca estándar que contiene las acciones de vigilancia.

Paso 2: ¿Cómo habilitar el temporizador de vigilancia?

¿Cómo habilitar el temporizador de vigilancia?
¿Cómo habilitar el temporizador de vigilancia?
¿Cómo habilitar el temporizador de vigilancia?
¿Cómo habilitar el temporizador de vigilancia?

Para habilitar el temporizador, usamos la función "wdt_enable" donde necesitamos pasar el intervalo de umbral en el que se reiniciará la placa. Dependiendo de nuestro caso de uso, esto puede ser desde 15 milisegundos hasta 8 segundos en configuraciones predefinidas que están contenidas en la biblioteca de vigilancia.

UMBRAL - NOMBRE CONSTANTE

15 ms WDTO_15MS 30 ms WDTO_30MS 60 ms WDTO_60MS 120 ms WDTO_120MS 250 ms WDTO_250MS 500 ms WDTO_500MS 1s WDTO_1S 2s WDTO_2S 4s WDTO_4S 8s WDTO_8S

Paso 3: Mantenga su programa en funcionamiento

Mantenga su programa en funcionamiento
Mantenga su programa en funcionamiento

Ahora, con el temporizador habilitado, para evitar que reinicie nuestro Arduino, debemos llamar periódicamente a la función "wdt_reset" para reiniciar el temporizador de vigilancia antes de que expire el intervalo de umbral.

Al elegir un intervalo de reinicio, es crucial que tengamos en cuenta cualquier operación prolongada como leer o enviar datos o conectarse a sensores externos. El umbral de reinicio debe ser al menos una vez y media mayor que estos tiempos para evitar reinicios accidentales.

Paso 4: Ejemplo de uso

Ejemplo de uso
Ejemplo de uso
Ejemplo de uso
Ejemplo de uso
Ejemplo de uso
Ejemplo de uso

En el programa de ejemplo que puede descargar aquí, primero configuramos el temporizador de vigilancia con un intervalo de reinicio de 4 segundos. Luego para saber que estamos en la función de configuración, destellamos un LED 3 veces rápidamente y luego en el bucle principal primero reseteamos el temporizador, encendemos un LED con intervalos progresivamente más largos y luego lo apagamos. El siguiente ciclo reinicia el temporizador nuevamente hasta que el tiempo de encendido sea superior a 4 segundos.

Cuando esto sucede, el temporizador de vigilancia reinicia la placa y la configuración se ejecuta nuevamente.

Paso 5: Problemas con el temporizador de vigilancia

Un posible problema con el temporizador de vigilancia, dependiendo del cargador de arranque de su Arduino es que si el valor del temporizador de vigilancia es demasiado bajo y el cargador de arranque no restablece el temporizador al cargar un nuevo código, puede terminar dañando su placa Arduino de una manera que siempre estará atascado en la fase de arranque. El cargador de arranque intentará iniciarse, pero el temporizador seguirá reiniciando la placa, sin permitir que se inicie correctamente. Para evitar problemas como este, asegúrese de utilizar siempre intervalos de umbral de 2 segundos o más.

Paso 6: disfruta

Disfrutar
Disfrutar

Si tiene un ejemplo de dónde ha utilizado el temporizador de vigilancia en un proyecto real, avíseme en los comentarios, asegúrese de que le guste el video y no olvide suscribirse.

Saludos y gracias por leer / mirar!

Recomendado: