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

8

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:

  1. Conecte mi microcontrolador con un IC dedicado externo específico de watchdog-timer .
  2. 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.
  3. Diseñe mi propio circuito de vigilancia basado en 555 temporizadores y conéctelo a mi microcontrolador.
  4. 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.

bocado
fuente
1
4) es barato y simple. ¿Su objeción es solo que no puede configurarlo en 6 segundos? Eso es bastante tiempo para los estándares de microcontroladores
pjc50
1
@ pjc50: Definitivamente es barato :) E incluso el tiempo de 6 segundos es posible, creo. Sin embargo, artículos como este sugieren que el perro guardián interno puede no ser tan robusto como uno externo dedicado. Y la razón por la segunda vez es que, en mi microcontrolador, tengo un gestor de arranque Arduino que incluye un tiempo de espera de 4 segundos en el primer inicio. (Podría aprender a reprogramar esto, pero todavía está en mi curva de aprendizaje)
mordida del
1
Definitivamente deberías arreglar el gestor de arranque. Los 4 segundos de espera son 4 segundos adicionales de consumo de batería de los que puede deshacerse. En lugar de esperar, pídalo, por ejemplo, muestree un pin dedicado que se tira hacia abajo cuando está en implementación.
Igor Skochinsky

Respuestas:

14
  1. Más caro, como ya lo descubrió. Pero debería darle el más alto nivel de confiabilidad: debido a que el watchdog es completamente independiente del microcontrolador, seguirá funcionando y reiniciará el microcontrolador cuando este último 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 puede usar como un MMV retráctil (multivibrador monoestable), que en realidad es el perro guardián. Si considera un 555, un 10F200 es mejor: sin piezas externas y un tiempo más preciso (1% de precisión).
  3. un 555? ¿Seriamente?
  4. El perro guardián interno funcionará si el IC dedicado es demasiado costoso. Si eres realmente paranoico, puedes pensar en un escenario donde algún error de hardware bloqueará el microcontrolador y el perro guardián con él. Nunca supe que esto sucediera, pero no sé qué tan bien duermes.

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,

stevenvh
fuente
2
@ Nick - Niza que le gusta, pero en realidad me hizo pasar más tiempo escribiendo el resto de la respuesta :-).
stevenvh
1
¿Qué hay de malo con los 555 temporizadores? :)
Justin ᚅᚔᚈᚄᚒᚔ
3
@Justin - Hay personas para quienes un 555 es religión: puedes resolver todos los problemas mundiales y luego algunos con un 555. Bueno, un 555 es bastante versátil, las aplicaciones típicas son multivibradores monoestables y astables, PWM, pero no es el mejor para todo. En esta pregunta / respuesta, OP pasa un par de semanas para diseñar un circuito 555 para una tarea que no está hecha. El mismo trabajo podría programarse en un microcontrolador en una hora. No estoy cuestionando las habilidades de OP aquí ni su enfoque, ya que entiendo que tuvo que usar un 555 ...
stevenvh
2
Cada vez que alguien usa palabras como "absolutamente" me siento obligado a encontrar un contraejemplo. En este caso: un microcontrolador es más sensible a los rayos cósmicos y la radiación que un 555, por lo tanto, en algunas aplicaciones, sería preferible un 555 en términos de confiabilidad.
apalopohapa
2
@apalopohapa - Estoy corregido. En las naves espaciales, los 555 pueden ser una mejor opción que los microcontroladores. Por supuesto, las computadoras hechas de 555 son (estimar) 15 órdenes de magnitud menos precisas , más grandes, más hambrientas de energía y no tan fáciles de programar en C ++ o Ada ... :-)
stevenvh
5
  1. El temporizador de vigilancia es simple, funciona, barato. Elección atroz.
  2. Un microcontrolador adicional es excesivo. No es útil ya que tienes que programarlo, es más caro, más área.
  3. Esto tiene sentido. Pero haría 1 en su lugar. Más moderno.
  4. Yo usaría esto si funciona. La única pregunta es si se puede configurar en 6 segundos.
Brian Carlton
fuente
Gracias por la comparacion. ¡Sin embargo, lo único es que # 1 no parece ser barato! No he encontrado ningún IC compatible con watchdog-timer con un precio de cantidad inferior a un dólar como mencioné, mientras que, como probablemente sepa, hay muchos microcontroladores (para la opción # 2) que son menos de USD 0.50.
mordida del
2

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.

Igor Skochinsky
fuente