8 votos

¿Cuál de estos enfoques para un temporizador de vigilancia?

Recientemente he aprendido acerca de los temporizadores de vigilancia, y estoy tratando de implementar uno para mi circuito con el fin de restablecer mi (AVR) microcontrolador si se cuelga (es decir, no responde al perro guardián).

Basándome en algunas investigaciones, me parece que hay alrededor de cuatro opciones:

  1. Conectar mi microcontrolador con un externo dedicado IC específico para el temporizador de vigilancia .
  2. Conectar mi microcontrolador con un microcontrolador adicional (alguna muy básica y barata), esta última codificada con el único propósito de vigilar el tiempo.
  3. Poner mi propio Circuito watchdog basado en un temporizador 555 y conectarlo a mi microcontrolador.
  4. Utilice el capacidad del temporizador de vigilancia interno en mi microcontrolador.

.

¿Cuál de los enfoques anteriores calificaría más alto y por qué?

Me gustaría establecer un tiempo de watchdog de alrededor de 6 segundos, basado en ciertos criterios para la forma en que estoy haciendo el resto de mi diseño y el código (el dispositivo será un registrador de temperatura periódica alimentado por baterías).

Una pequeña nota : Mi preferencia sería la opción 1, por la simplicidad, sin embargo, basado en el par que he encontrado, estas piezas o parecen ser caras (me gustaría una solución por debajo de 1,25 USD como máximo), o sólo permiten menos de 2 segundos para el período de temporización del perro guardián.

14voto

lillq Puntos 4161
  1. Más caro, como ya has comprobado. Pero debería darte el mayor nivel de fiabilidad: como el watchdog es completamente independiente del microcontrolador, seguirá funcionando, y reiniciará el microcontrolador cuando éste esté en llamas, por así decirlo. Ver 4)
  2. Brian está en contra, pero hay microcontroladores baratos en un paquete pequeño, como el PIC10F200 en SOT-23, que puedes usar como un MMV (multivibrador monoestable) retriggerable, que es el watchdog en realidad. Si consideras un 555, un 10F200 es mejor: no hay partes externas, y la sincronización es más precisa (1% de precisión).
  3. a 555? ¿En serio?
  4. El perro guardián interno servirá si el IC dedicado es demasiado caro. Si eres realmente paranoico puedes pensar en un escenario donde algún error de hardware bloqueará el microcontrolador y el watchdog con él. Nunca he sabido que esto suceda, pero no sé qué tan bien duerme.

Como pjc50 dice que 6 segundos es mucho tiempo. Un microcontrolador típico ejecutará decenas de millones de instrucciones en ese tiempo, y entonces muchas cosas pueden salir mal. Supongamos que estás controlando alguna carga con PWM, y un ciclo de trabajo del 10% mantiene la disipación baja. El microcontrolador se vuelve loco y la salida se atasca en un nivel alto, un ciclo de trabajo del 100 %. A la carga no le gusta y muere. No quieres esperar 6 segundos para que eso ocurra. Debe haber alguna parte de tu código donde pases con mucha más frecuencia. Un bucle principal puede ser tan corto como 10 ms, entonces podrías establecer el tiempo de espera del watchdog en 100 ms, por ejemplo. Si das una patada al perro cada 10 ms, entonces un tiempo de espera significa que lo has perdido 10 veces. Una vez, vale, pero diez veces es un desastre, y tienes que tomar medidas. La carga se apagará después de 100 ms en lugar de 6 segundos, lo que puede ser la diferencia entre estar vivo o muerto.

5voto

Chris Miller Puntos 2552
  1. El temporizador de vigilancia es sencillo, funciona y es barato. Es una buena opción.
  2. Un microcontrolador adicional es una exageración. No es útil ya que hay que programarlo, es más caro, más área.
  3. Esto tiene sentido. Pero yo haría la 1 en su lugar. Más moderno.
  4. Yo usaría esto si funciona. La única pregunta es si se puede ajustar a 6 segundos.

2voto

Mark McDonald Puntos 246

Si tu circuito/dispositivo no controla hardware crítico para la vida, probablemente puedas salirte con la tuya utilizando el watchdog interno. De lo contrario (o en realidad, en cualquier caso) echa un vistazo a estos dos grandes artículos de Jack Ganssle:

http://www.ganssle.com/watchdogs.htm

http://www.ganssle.com/articles/watchdogsredux.htm

Por cierto, si no puedes poner el watchdog en un intervalo largo, puedes intentar el enfoque de despertarte lo suficientemente a menudo como para activar el watchdog, pero sólo ir al completo tomando medidas/escribiendo registros de vez en cuando.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X