el 09-15-2013 02:28 PM
Hola,
Estoy intentando incluir en mi codigo un Watchdog, para evitar posibles problemas en caso de que se quede colgado y que me lo indicara en su caso.
He estado buscando ejemplos, y he intentado implementar el siguiente adjunto.
Pero no me queda muy claro su funcionamiento. Cuando el sistema se queda colgado, deja de trabajar el whileloop y pasaría a la secuencia dos, de "system reset"?? tengo que tener siempre este a true? y que hace realmente la función de "system reset"?
Agradecía cualquier aclaración o alguna otra idea más sencilla para implementar el Watchdog.
Un saludo y muchisimas gracias!!
¡Resuelto! Ir a solución.
el 09-16-2013 12:05 PM
No tengo ahora mismo el módulo y el hardware para programar en una fpga, pero te explico lo que hace el programa:
En resumen, hacer una cuenta hacia atrás en el valor del shift register, que es como el timer de un watchdog de un microcontrolador. Si desborda, sales del bucle y pasas a la segunda secuencia, ejecutando un reset del sistema. Si vuelves a poner a true el control de Reset, no desborda.
Lo que tienes que hacer en tu programa es un clear del watchdog de forma periódica. Para hacer el clear pon el valor true en su control Reset y después vuelve a poner false para que siga contando de forma normal. Así, si tu programa se queda colgado, no reseteará el watchdog, éste desbordará y hará un reset.
Ejecutando ese programa (excepto el system.reset, que puedes sustituir por una ventana de aviso) con el target del PC podrás simular el funcionamiento.
09-17-2013 03:11 AM - editado 09-17-2013 03:31 AM
Hola jrafa,
Muchisimas gracias por tu respuesta.
Estuve probando el programa en un subvi, fuera de la FPGA y no me llegaba a decrementar a negativos, sino que se iniciaba a 65535, y entonces daba igual que lo iniciara con el reset o no, por eso tenía dudas del funcionamiento.
Entonces como me comentas, tengo que incluir en mi programa en RT, una activación-desactivación del Reset para que no se llegue a salir del bucle. A parte, he incluido un indicativo al cumplirse la condición para saber cuando se produce el watchdog (y entonces activar o no el System Reset).
Pero mi duda es en cuanto a tiempo, me gustaría incluir un watchdog de 1 segundo. Cómo puedo controlar el Reset para saber aproximadamente cada cuanto tiempo está ejecutandose??
Un saludo y muchísimas gracias por tu ayuda.
el 09-17-2013 04:45 AM
El tiempo que tardará en desbordarse el watchdog, si no hay un clear, depende del número que le cargas y de la base de tiempos del bucle. El bucle se repetirá tantas veces como el valor de Initial Count, la base de tiempos la puedes ver haciendo doble click sobre el nodo izquierdo del timed loop y viendo su period. El tiempo es el producto del periodo (el tiempo en hacer cada iteración) e Initial Count (el número de iteraciones).
el 09-18-2013 05:28 AM
Todo claro. Muchísimas gracias!!!!!!
el 10-21-2013 04:14 PM
Perdonar,
He estado implementando el watchdog utilizando la libreria de Real Time, pero no me queda claro su funcionamiento en este caso.
Supongo que es al dejarse de activar el "whack.vi" pero no veo de que manera lo estoy alimentando de manera continua en mi loop.
Agradecería por favor si me podeis aclarar esta duda,
un saludo y muchas gracias!!!