¿Qué tecnología es WDT?

WDT es la abreviatura del inglés Watchdog Timer.

El nombre chino del temporizador de vigilancia es perro guardián. Es un circuito temporizador. Generalmente tiene una entrada llamada alimentación para perros y una salida al terminal RST de la MCU. Cuando la MCU funciona normalmente, envía una señal al terminal de alimentación para perros cada dos veces para borrar el WDT. Si excede el límite especificado El tiempo no alimenta al perro (generalmente cuando el programa se agota), si el temporizador WDT lo excede, se enviará una señal de reinicio a la MCU, que es el reinicio de la MCU para evitar que la MCU falle. La función del perro guardián es evitar que el programa se repita sin fin o, en otras palabras, que el programa se ejecute.

Principio de funcionamiento: una vez que el sistema está en funcionamiento, se inicia el contador de vigilancia y comienza a contar automáticamente. Si el mecanismo de vigilancia no se borra después de un cierto período de tiempo, el contador de vigilancia se desbordará. provocando una interrupción del mecanismo de vigilancia y provocando un reinicio del sistema. Por lo tanto, cuando utilice un chip con un perro guardián, preste atención al perro guardián.

El perro guardián del hardware utiliza un temporizador para monitorear la ejecución del programa principal. Es decir, durante la ejecución del programa principal, debemos restablecer el temporizador antes de que expire. Bucle infinito o el puntero de la PC no puede regresar. Luego, el microcontrolador se reiniciará cuando expire el temporizador. Chips WDT de uso común, como MAX813, 5045, IMP 813, etc., con precios que oscilan entre 4 y 10 yuanes.

El principio de la tecnología de vigilancia de software es similar a este, pero se implementa mediante software. Todavía tomando la serie 51 como ejemplo, sabemos que hay dos temporizadores en el microcontrolador 51 y podemos usar estos dos temporizadores para monitorear el funcionamiento del programa principal. Podemos establecer un cierto tiempo para T0 y asignar un valor a una variable cuando ocurre una interrupción de tiempo. Esta variable ya tiene un valor inicial al comienzo del programa principal. El valor de tiempo que queremos establecer aquí debe ser menor que. El tiempo de ejecución del programa principal, de modo que el valor de la variable se juzgue al final del programa principal. Si el valor cambia como se esperaba, significa que la interrupción T0 es normal. Si no hay cambios, el programa es. reiniciar. Para T1, lo usamos para monitorear el funcionamiento del programa principal. Establecemos un cierto tiempo de temporización para T1 y lo reiniciamos en el programa principal. Si no se puede restablecer dentro de un cierto tiempo, la interrupción de temporización de T1 provocará que el microcontrolador. para restablecer. Aquí, el tiempo de sincronización de T1 debe establecerse mayor que el tiempo de ejecución del programa principal, dejando un cierto margen para el programa principal. Si la interrupción de T1 es normal o no será monitoreada por la subrutina de interrupción temporizada T0. Esto es suficiente para formar un ciclo, T0 monitorea a T1, T1 monitorea el programa principal y el programa principal monitorea T0, asegurando así el funcionamiento estable del sistema.

La serie 51 tiene un temporizador de vigilancia dedicado, que divide y cuenta la frecuencia del sistema. Cuando el temporizador se desborda, provocará un reinicio. El temporizador de vigilancia puede configurar la tasa de desbordamiento y también se puede utilizar solo. a Uso del temporizador

Nota sobre el uso del mecanismo de vigilancia: la mayoría de los microcontroladores de la serie 51 tienen mecanismos de vigilancia cuando el mecanismo de vigilancia no se borra periódicamente, se producirá un reinicio. Esto evita que los programas se escapen. El diseñador debe conocer el tiempo de desbordamiento del mecanismo de vigilancia para decidir cuándo borrarlo en el momento adecuado. No debe borrar el mecanismo de vigilancia con demasiada frecuencia, de lo contrario provocará un desperdicio de recursos. Cuando el programa se ejecuta normalmente, el software configura el temporizador a intervalos regulares (menos que el período de desbordamiento del temporizador) para evitar reinicios falsos causados ​​por interrupciones de desbordamiento.

Aplicación Watchdog: Watchdog es un administrador de monitoreo efectivo que restablece el funcionamiento normal del sistema (tiene la función de bloquear la unidad de CD-ROM y cualquier programa específico) y puede usarse en casa para evitar que los niños desde jugar juegos sin control, navegar por Internet, ver vídeos), etc. tienen muy buen valor de aplicación.

Las ideas de diseño del software del sistema "watchdog":

1. del temporizador de vigilancia T0. Configure el modo de trabajo de T0 en el bloque del programa de inicialización y habilite las funciones de interrupción y conteo.

Sistema Fosc = 12 MHz, T0 es un contador de 16 bits, el valor de conteo máximo es (2 elevado a la décima potencia) -1 = 65 535 y la frecuencia de conteo de entrada T0 es. Fosc/12, el período de desbordamiento es (65 535 1)/1=65 536 (μs).

2. Calcule el tiempo que tarda el programa de control principal en realizar un ciclo. Considerando cada módulo funcional del sistema y sus tiempos de ciclo, el tiempo de ejecución del programa de control principal de este sistema es de aproximadamente 16,6 ms. El sistema configura el temporizador "watchdog" T0 durante 30 ms (el valor inicial de T0 es 65 536-30 000 = 35 536). Cada ciclo del programa de control principal actualizará el valor inicial de T0. Si el programa entra en un "bucle infinito" y el valor inicial de T0 no se actualiza en 30 ms, entonces el temporizador "vigilante" T0 se desbordará y solicitará una interrupción.

3. Diseñar la rutina del servicio de interrupción correspondiente al desbordamiento T0. Esta subrutina requiere solo una instrucción, que consiste en escribir un comando de "transferencia incondicional" en la dirección del vector de interrupción (000BH) correspondiente a T0, arrastrar la computadora de regreso a la primera línea de todo el programa, reinicializar el microcontrolador y obtener el secuencia de ejecución correcta.