operación del temporizador de vigilancia

1

He leído que el temporizador de vigilancia empuja el microprocesador / controlador a un estado de reinicio cada vez que experimenta alguna anomalía en el software, como la ejecución en un bucle infinito. y después de un tiempo, un profesor muy importante nos dijo que después de reiniciar, el procesador reanuda el funcionamiento de la siguiente instrucción a la errónea.

cuando el temporizador de vigilancia reinicia el procesador, ¿desde dónde comienza el procesador su próxima ejecución?

¿Solo quería saber qué es correcto o si se emplea algún otro concepto?

    
pregunta Himanshu Sourav

2 respuestas

4

Realmente depende del diseñador del microcontrolador. Pero, en general, un watchdog fuerza un reinicio del procesador y normalmente inicia el programa desde el principio. Sin embargo, no siempre es así, y el watchdog también se puede usar a menudo para desencadenar una interrupción, en cuyo caso sí, el ISR volvería a donde fue interrumpido con la siguiente instrucción para ejecutar.

Por ejemplo, una forma común de forzar el reinicio del software de un chip que no tiene una instrucción de reinicio es habilitar el perro guardián, luego ingresar en un ciclo "while (1)", por lo que el perro guardián reinicia el chip.

La función de interrupción del perro guardián a menudo también se usa para despertar a un microcontrolador que ha sido puesto en reposo, ya que la mayoría se irá con su propio oscilador. Esto significa que el oscilador principal puede apagarse para ahorrar energía, y el perro guardián puede disparar una interrupción que despierta el chip nuevamente.

    
respondido por el Majenko
3

Tu profesor muy mayor está lleno de tu-sabe-qué. Lo que sucede después de un restablecimiento de WDT es (generalmente) que el procesador se reinicia desde donde se iniciaría después de un restablecimiento completo.

La información que un tiempo de espera de WDT causó el restablecimiento está a menudo disponible (en forma de bit o bits en un registro), y el firmware puede tratar dicho restablecimiento de manera diferente al inicio en frío, pero en general no hay forma de saber qué instrucción se estaba ejecutando antes de que se agotara el tiempo de espera de WDT, y no querría ir allí de todos modos. Podría estar ejecutando memoria de datos o atascado en un bucle infinito de algún otro tipo. No quieres volver allí, el WDT es lo que te hace salir de esa situación.

Normalmente, querría hacer el tipo de limpieza e inicialización que se llevaría a cabo durante un arranque en frío, y asegurarse de que las cosas estén en un estado seguro, y posiblemente registrar el evento. No se sabe qué podría haber hecho el procesador antes del reinicio de WDT; podría haber dañado la memoria RAM o la EEPROM, las salidas bloqueadas en estados inseguros, los controles de dirección de puerto reescritos o los registros de control de reloj o cualquier otra cosa. Esa es la razón por la que normalmente es difícil o imposible deshabilitar un WDT con firmware en procesadores bien diseñados: no desea que un procesador errático deshabilite accidentalmente su propio WDT.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas