Recientemente aprendí acerca de los temporizadores de vigilancia, y estoy tratando de implementar uno para mi circuito con el fin de restablecer mi microcontrolador (AVR) si se cuelga (es decir, no responde a la vigilancia).
Según algunas investigaciones, me parece que hay alrededor de cuatro opciones:
- Conecte mi microcontrolador con un IC dedicado externo específico de watchdog-timer .
- Conecte mi microcontrolador con un microcontrolador adicional (uno muy básico y económico), este último codificado con el único propósito dedicado de temporización de vigilancia.
- Diseñe mi propio circuito de vigilancia basado en 555 temporizadores y conéctelo a mi microcontrolador.
- Utilice la capacidad del temporizador de vigilancia interna en mi microcontrolador.
.
¿Cuál de los enfoques anteriores clasificaría más alto y por qué?
Me gustaría establecer un tiempo de vigilancia de alrededor de 6 segundos, basado en ciertos criterios para la forma en que estoy haciendo el resto de mi diseño y código (el dispositivo será un registrador de temperatura periódico alimentado por batería).
Una pequeña nota : mi preferencia sería la Opción 1, por simplicidad, sin embargo, según la pareja que he encontrado, estas partes parecen ser caras (me gustaría una solución por debajo de 1,25 USD como máximo), o solo permiten menos de 2 segundos para el período de tiempo de vigilancia.
fuente
Respuestas:
Como pjc50dice que 6 segundos es mucho tiempo. Un microcontrolador típico ejecutará decenas de millones de instrucciones en ese tiempo, y luego muchas cosas pueden salir mal. Suponga que está controlando alguna carga con PWM, y un ciclo de trabajo bajo del 10% mantiene la disipación baja. El microcontrolador se vuelve loco y la salida se atasca en un nivel alto, ciclo de trabajo del 100% A la carga no le gusta y muere. No quieres esperar 6 segundos para que eso suceda. Debe haber alguna parte de su código donde pase mucho más frecuente. Un bucle principal puede ser tan corto como 10 ms, entonces puede establecer el tiempo de espera del watchdog en 100 ms, por ejemplo. Si pateas al perro una vez cada 10 ms, ¡un tiempo de espera significa que te lo perdiste 10 veces! Una vez, está bien, pero diez veces es un desastre, y debes tomar medidas. La carga se apagará después de 100 ms en lugar de 6 segundos,
fuente
fuente
Si su circuito / dispositivo no controla el hardware vital, probablemente pueda salirse con la suya utilizando el perro guardián interno. De lo contrario (o en realidad, en cualquier caso) echa un vistazo a estos dos excelentes artículos de Jack Ganssle:
http://www.ganssle.com/watchdogs.htm
http://www.ganssle.com/articles/watchdogsredux.htm
Por cierto, si no puede configurar el perro guardián en un intervalo largo, puede intentar el enfoque de despertarse con la frecuencia suficiente para patear al perro guardián, pero solo de vez en cuando va a tomar medidas completas / escribir registros.
fuente