Hola a todos!
Os cuento un poco el problema que tengo:
He desarrollado un programa para un PIC16F876A que basicamente recibe un string de datos procedente de una maquina, la decodifica y en funcion de su contenido enciende o apaga una serie de Leds. Al conectar mi PCB con el PIC a la maquina, todo funciona "casi" perfectamente, y digo "casi" porque hay un pequeno problema, y es que si apago la maquina, los LEDs quedan encendidos segun la ultima cadena de datos que le llego al PIC (es como si quedara congelado en el ultimo estado), claro, no queda bien. Si la vuelvo a encender, el PIC vuelve a funcionar correctamente. He estado buscando informacion sobre el tema pero no he encontrado nada especifico para esto. En un intento de solucionarlo, he anadido un codigo para apagar todos leds si no hay variacion en la entrada de datos tras un determindado numero de strings de entrada:
while (1) {
//...
//codificacion del string de datos actual mediate el uso de "gets"
//...
if (valorNW==valorNW_Temp) {
contador=contador+1;
} else {
contador=0;
}
if (contador<10) {
//tratamiento de la cadena de texto (encendido de leds)...
} else {
//apagar todos los leds...
}
//...
}
y funciona bien, pero solo mientras la maquina esta encendida (efectivamente he creado un "sleep" mode para los leds), pero si apago la maquina en el momento en que hay Leds encendidos, de nuevo se queda todo como estaba. Si abro el Hyperterminal para ver que esta pasando con la cadena de datos, al apagar la maquina, la lectura sigue siendo la ultima, pero obviamente no se "refresca".
En resumidas cuentas, lo que necesito es que al pulsar "OFF" para apagar la maquina (aun cuando todavia hay alimentacion al PIC), el pic se resetee con todas las salidas a 0
Con lo que he podido investigar, y dada mi gran ignorancia en el mundo de los microcontroladores, intuyo que la solucion puede pasar por el uso de interrupciones, pero sinceramente no veo como aplicarlas a mi problema
Espero haberme explicado bien, agradezco de antemano cualquier ayuda!
Saludos!
PD. Siento la ausencia de tildes y de algun que otro caracter, pero es que me encuentro en el extranjero, todo configurado en ingles