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 18FEl 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