TODOPIC
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
19 de Abril de 2014, 03:53:18

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
342498 Mensajes en 38342 Temas por 39689 Usuarios
Último usuario: EChapdela
* Inicio Ayuda Buscar Calendario Ingresar Registrarse
Buscar en TodoPIC
+  TODOPIC
|-+  Microcontroladores PIC
| |-+  Todo en microcontroladores PIC (Moderadores: marmatar, maunix, MGLSOFT, Modulay, pocher, Sasián, Suky)
| | |-+  ¿Como se usa el watchdog?
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Marcar como favorito Imprimir
Autor Tema: ¿Como se usa el watchdog?  (Leído 3275 veces)
patolinec
Colaborador
PIC16
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 206


Todo Ok


« : 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
En línea

Casi me maté pero ahora estoy de nuevo vivo
BrunoF
Administrador
DsPIC30
*******
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 3691



« Respuesta #1 : 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.

En línea

"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.
maunix
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 4751


Mauricio, Córdoba (Argentina)


WWW
« Respuesta #2 : 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 » En línea

- 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)
patolinec
Colaborador
PIC16
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 206


Todo Ok


« Respuesta #3 : 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?
En línea

Casi me maté pero ahora estoy de nuevo vivo
MGLSOFT
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 7390


MGLSOFT


« Respuesta #4 : 08 de Junio de 2006, 14:25:37 »

Je..je.. Mr. Green Mr. Green
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.... Mr. Green Mr. Green
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... rebotando rebotando
En línea

Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.
maunix
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 4751


Mauricio, Córdoba (Argentina)


WWW
« Respuesta #5 : 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
En línea

- 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)
patolinec
Colaborador
PIC16
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 206


Todo Ok


« Respuesta #6 : 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
En línea

Casi me maté pero ahora estoy de nuevo vivo
Azicuetano
Moderadores
PIC24H
*****
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 1030



WWW
« Respuesta #7 : 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.
En línea

patolinec
Colaborador
PIC16
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 206


Todo Ok


« Respuesta #8 : 11 de Junio de 2006, 18:37:49 »

Pues es muy buena la idea te cuento, y gracias por compartirla
En línea

Casi me maté pero ahora estoy de nuevo vivo
kuauhtemok
PIC16
***
Desconectado Desconectado

Sexo: Masculino
Mensajes: 116



« Respuesta #9 : 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.  Sad
En línea

La felicidad no es mas q la ausencia momentanea del dolor
maunix
Moderador Local
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 4751


Mauricio, Córdoba (Argentina)


WWW
« Respuesta #10 : 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.  Sad

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
En línea

- 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)
TODOPIC
   

 En línea
Páginas: [1] Imprimir 
« anterior próximo »
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines XHTML 1.0 válido! CSS válido!
Página creada en 0.044 segundos con 24 consultas.