Autor Tema: ¿Como se usa el watchdog?  (Leído 9452 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado patolinec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 206
¿Como se usa el watchdog?
« en: 08 de Junio de 2006, 09:58:06 »
He solo queria saber como puedo evitar que un micro se cuelgue, y me parece que el watchdog sirve para este proposito pero jamas lo he usado, alguien sabe como funciona esta nota o como puedo configurarlo para evitar que el micro se cuelgue

Espero su respuesta saludos
Casi me maté pero ahora estoy de nuevo vivo

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ¿Como se usa el watchdog?
« Respuesta #1 en: 08 de Junio de 2006, 10:27:54 »
Hola. El watchodg timer produce un reset. Por defecto el tiempo que demora en producirse es 72ms.
Para limpiar el watchdog timer se utiliza la instruccion clrwdt. Esta instruccion resetea la cuenta(la de 72ms).

El tiempo antes que se produzca el reset provocado por el wdt, es configurable(en casi todos los micros, creo).Generalmente el wdt esta compartido con el Timer0, y solo se puede asignar una cosa a la vez, es decir:
o asignas un prescaler al Timer0 y lo utilizas como Timer, o bien le asignas un prescaler al wdt y lo utilizas para esto.
Seguramente te daran mas ayuda los que lo utilizan comunmente, cosa que no es mi caso.
Saludos.

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ¿Como se usa el watchdog?
« Respuesta #2 en: 08 de Junio de 2006, 13:24:03 »
He solo queria saber como puedo evitar que un micro se cuelgue, y me parece que el watchdog sirve para este proposito pero jamas lo he usado, alguien sabe como funciona esta nota o


En los 16F el watchdog se habilita por los configuration bits
El tiempo base es de 18mseg.  La base de tiempo del WDT es interna y no está referenciada a ningún timer.  Tampoco puedes acceder a este timer interno.

Se le puede asignar un prescaler (el cual es compartido con el timer0) el cual puede escalarse hasta 1:128 es decir 2.3 seg.  Aclaro que lo que se comparte es el prescaler pero el timer del watchdog es totalmente independiente al del timer0.

Por defecto al iniciarse el PIC, el prescaler está asignado al WDT y seteado como 1:128 lo cual da como resultado 2.3 seg

En los 18F

El tiempo de base del watchdog es típoco 18mseg pero tiene un corrimiento entre 7 y 33mseg (es un parámetro eléctrico que figura en el datasheet de cada pic).
En los más viejitos de los PIC18F el prescaler del Watchdog es exclusivo pero se programa con los configuration bits.
En los nuevos PIC18F, el prescaler es de 16bits teniendo un rango entre 4ms hasta 131 segundos.
En los 18F además el watchdog se puede habilitar por hardware (con los fuses o configuration bits) pero luego habilitarse o deshabilitarse desde el software.

Aclaro que en los 18F los fuses o configuration bits se pueden modificar por software, es decir por código.


como puedo configurarlo para evitar que el micro se cuelgue

El watchdog resetea al pic, pero no puede evitar que se "cuelgue".  Si tienes mucho ruido eléctrico o tu software ingresa a una rutina que no puede salir (por algún error en la lógica de tu código) el watchdog no puede evitar eso.  Lo que hace es reiniciarte el pic.  Hay que tener mucho cuidado porque si estas atendiendo algún proceso al reinicarse el pic si tu código no prevee esas cosas tu software podría hacer cualquier cosa.

Saludos


/Edit: agregué condición de start del WatchDog en los PIC16Fxxx
« Última modificación: 08 de Junio de 2006, 14:55:33 por maunix »
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado patolinec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 206
Re: ¿Como se usa el watchdog?
« Respuesta #3 en: 08 de Junio de 2006, 14:16:51 »
Ay a ok, osea el watchdog solo resetea cada cierto tiempo, muy buena la explicacion gracias, compa

ahora una pregunta mas con que frecuencia un mciro suele colgarse?, o esto es resultado de una programacion deficiente?
Casi me maté pero ahora estoy de nuevo vivo

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7907
Re: ¿Como se usa el watchdog?
« Respuesta #4 en: 08 de Junio de 2006, 14:25:37 »
Je..je.. :mrgreen: :mrgreen:
La mayoria de las veces el micro se cuelga por estar mal programado...
A mi me ocurrio no tener en cuenta como volver de las interrupciones y salir a cualquier lado, tambien el uso de muchos Goto es un arma de doble filo, pero lo mas comun es no preveer el regreso desde las rutinas o llamadas de rutinas.
Ni hablar de los saltos por tablas.... :mrgreen: :mrgreen:
En fin, si programas utilizar el watchdog debes preveer el reseteo del mismo antes que ocurra el tiempo del mismo, sino te reseteara el micro... :-/ :-/
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ¿Como se usa el watchdog?
« Respuesta #5 en: 08 de Junio de 2006, 14:39:47 »
Ay a ok, osea el watchdog solo resetea cada cierto tiempo, muy buena la explicacion gracias, compa

ahora una pregunta mas con que frecuencia un mciro suele colgarse?, o esto es resultado de una programacion deficiente?

Es un tema que hay que analizar muy bien y la pregunta "con qué frecuencia un micro suele colgarse" tendría que respondertela como "depende..."

En lo general el micro no se "cuelga", lo que puede pasar es que por ruido exterior se modifiquen las señales que está monitoreando el pic y por ende se llegue en el software a una condición " no esperada" y quedando tal vez estancada la lógica en una condición no contemplada.

El salto por tablas erróneo puede que tampoco produzca un reseteo por watchdog, tal vez tan solo haga que el micro vuelva el Program Counte a 0, lo que sería "com si fuese un reset" pero en realidad no lo es. 

También es necesario saber donde uno ubicará los clear watchdog porque si uno lo pone por todos lados entonces nunca se llegará al reseteo.  Hay que analizar bien donde poner esta instrucción

En lo particular, tuve oportunidad de utilizar el watchdog con éxito en una oportunidad en que por ruido eléctrico en unas señales de A/D el micro se me colgaba y dejaba de responder (lo notaba porque la comunicación con la usart dejaba de existir). 

Los canales A/D no siempre estaban cableados y en ocasiones el usuario podía dejarlos sin cablear con lo cual sensaban algo del exterior.   

Solo activar el watchdog solucionó el problema. 

Otra aplicación práctica es cuando uno espera cierta señal y en función de ella debe producir una salida.  Si dicha señal deja de existir el reseteo puede volver a cero todo el programa con lo cual el watchdog lo estamos usando "por comodidad" más que por necesidad.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado patolinec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 206
Re: ¿Como se usa el watchdog?
« Respuesta #6 en: 08 de Junio de 2006, 15:38:57 »
Ok, he solucionado el problema que tenia con mi sistema, gracias por sus ayudas la verdad es que solo tuve que habilitar el watchdog en el pic18f2550 y listo problema supera gracias
Casi me maté pero ahora estoy de nuevo vivo

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: ¿Como se usa el watchdog?
« Respuesta #7 en: 11 de Junio de 2006, 16:34:27 »
Hola gente! He estado un poco desaparecido (problemas personales) pero ya vuelvo a la carga.

En lo referente a los cuelgues del pic diré que el problema suele ser casi siempre por una programación defectuosa. Digo 'casi siempre' porque también puede haber factores externos que lo cuelguen. Explicaré mi experiencia.

Un equipo que diseñé en un determinado momento encendía un dispositivo que iba a 220 con unos 200 mA. La PCB tenía una bornera con la entrada de alimentación (220) y la salida que he comentado antes.

Si activaba la carga no tenía ningún problema pero, si desenchufaba la carga de la bornera mientras esta estaba activada el PIC hacía cosas raras y muchas veces se colgaba. Detecté que el problema era que había puesto muy próximas las lineas de potencia y las de control en mi PCB. Tras hacer un nuevo diseño este problema desapareció pero continué estudiando el fenómeno.

Mis conclusiones fueron que cuando cometes este error, a causa del ruido, el contador de programa del pic pega un salto y se puede ir a cualquier parte del programa. En muchos casos ni siquiera con el watchdog se puede solucionar este problema (el programa puede saltar a un lugar en el que se refresque el watchdog pero... evidentemente si se ha saltado medio codigo de programa por mucho que se refresque el funcionamiento del sistema será errático).

Continué estudiando el fenómeno y al final llegue a una solución que, aunque vergonzosa, es muy efectiva.

En todas y cada una de las funciones que tengo en mi programa pongo 'checkpoints'. Que son y cual es la finalidad de los mismos? Son símplemente una variable que al inicio de cada función pongo a cero. Cada 5 o 10 lineas de código la voy incrementando y al final de cada función miro si la variable se ha incrementado tantas veces como 'checkpoints' he puesto.

Si el programa se ejecuta de forma normal todo funcionará perfectamente. Sin embargo, si el programa ha sufrido algún salto en su código al final de la función en la que se halla quedado el PC del PIC detectaré que hemos sufrido un salto (a causa del ruido) y entonces reseteo el PIC ayudandome del watchdog (puesto que no hemos pasado por todos los checkpoints que hemos puesto).

No recomiendo esta solución a nadie pero, ante un error de diseño de estas características y si se ha efectuado una producción en serie y no queremos perder pasta es una chapuza muy efectiva.

Bueno... esa es mi experiencia.


Un saludo desde Alicante.

Desconectado patolinec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 206
Re: ¿Como se usa el watchdog?
« Respuesta #8 en: 11 de Junio de 2006, 18:37:49 »
Pues es muy buena la idea te cuento, y gracias por compartirla
Casi me maté pero ahora estoy de nuevo vivo

Desconectado kuauhtemok

  • PIC16
  • ***
  • Mensajes: 116
Re: ¿Como se usa el watchdog?
« Respuesta #9 en: 13 de Junio de 2006, 16:46:21 »

Gracias Azicuetano por tu idea, la verdad q si da mucho miedo q un pic se cuelge por factores externos cuando debe de funcionar por mucho tiempo.  :(
La felicidad no es mas q la ausencia momentanea del dolor

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ¿Como se usa el watchdog?
« Respuesta #10 en: 16 de Junio de 2006, 17:06:42 »

Gracias Azicuetano por tu idea, la verdad q si da mucho miedo q un pic se cuelge por factores externos cuando debe de funcionar por mucho tiempo.  :(

Yo no le echaría la culpa al pic de este tema.

En mi experiencia personal, las causas que pueden hacer 'colgar a un pic por factores externos' son las mismas que pueden perjudicar a cualquier circuito eléctrico/electrónico, es decir, campos magnéticos muy potentes que se manifiesten como algun ruido eléctrico que hagan mal funcionar al oscilador del pic o al pic mismo.

Esto no es ajeno a que tengas problemas con cualquier transistor o circuito que quieras armar.

Las soluciones están en buenos filtrados y blindajes del tipo de jaula de faraday además de un buen diseño del PCB.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything