Hola chicos, que tal...? Feliz navidad... tengo un planteamiento - pregunta... Les echo el cuento...
Estoy haciendo un programa el cual me lea y mande a un display las teclas que presione desde un teclado matricial, además los displays deben mostrar la causa del reset cuando este se produzca, ya sea por MCLR, POR, BOR y WDT (es por eso mi insistencia en temas anteriores por los resets)... además de que tiene dos switechs externos que cuando aprete me aparezca o interrpción 1 o interrupción 2 en el display, de acuerdo a cual accione... además un dipswitch que me deshabilite cada interrupción por separado y todas juntas (globales)... La Buena Noticia es que ya lo hice gracias a mis lecturas de tutoriales, datasheet, trasnochos, la colaboración de mucho de ustedes y gracias a las correcciones y orientaciones de mi amigo Henry (micro_cadaver)... pero me encuentro en un dilema con el programa y la simulación en proteus... estuve haciendo mis observaciones y las anote, a continuación se las expongo...
Primera observación:
Cuando via dipswith deshabilito las interrupciones; pues el MCLR, el WDT y el teclado matricial funcionan correctamente, a que me refiero con esto: Bueno, aprieto el teclado y los números se me ven en el display, el WDT se me desborda a los 2:12 (excelente) y cuando le doy al pulsador del MCLR, se me reinicia el programa apareciendo la C de Clear (todo bello
) todo chevere (Ojo esto con el dipswith puesto en bajo, es decir, sin interrupciones habilitadas)
Segunda Observación:
Cuando habilito las interrupciones, estás funcionan de maravilla(es decir, si aprieto el pulsador RB0(primera interrupción) me aparece el 1 y si aprieto el segundo pulsador (interrupción por RB1) me aparece el 2.... pero el MCLR, el WDT y el teclado no funcionan correctamente, me explico: Habilito via dipswith cada interrupción por separado y funcionan fino, le doy al teclado y funciona también, muestra los números, todo esto sin haber resetado via MCLR, pero cuando ahora le doy al pulsador del MCLR pues este me manda la causa del reset al display, es decir una C, como deberia ser, pero se queda pegado allí, el teclado no reacciona, lo único que funcionan son las interrupciones que cuando apriento el pulsador me aparece correctamente que fue la primera interrupción, y cuando apreto el segundo pulsador pues me aparece el 2, todo fino con ellas... Ahora con respecto al WDT, este se activa despues de 2:31 minutos, (mucho más tarde) y aparece la P de perro(lo que deberia hacer), pero cuando aprieto el pulsador del MCLR, no me aparece la C que deberia aparecer, sino que sigue la P del WDT allí pegada, y cuando le doy al pulsador de las interrupciones cada una sirve por separado (mostrando 1 o 2 dependiendo de cual active), pero cuando reseteo de nuevo por MCLR, pues sigue apareciendo la P del WDT en vez de la C del MCLR.
Este es mi dilema pergunta muchachos-.... que creen que pueda ser...
Les voy a anexar el codigo a ver si le quieren echar una ojeada...
Atte: Enigma... La llanerita de Guayana