He diseñado un simple control remoto RC5 usando un PIC16F57 y el clásico de filas-columnas escanea en un teclado de matriz 4x4.
La versión anterior de mi firmware escaneaba continuamente el teclado para encontrar una pulsación de tecla, pero el consumo de baterías era alto (obviamente).
Ahora estoy tratando de implementar un sistema de despertador en el que el micro duerme todo el tiempo y se despierta solo cuando el usuario presiona una tecla en la matriz. El problema es que el 16F57 solo puede activarse en 1) nivel lógico bajo en MCLR o 2) tiempo de espera de perro guardián. Esto último podría ser factible, pero implicaría sondear el teclado cada, digamos, 100 ms. La primera solución es la mejor, pero no pude hacerla funcionar.
La solución se abordó aquí: enlace
Es un documento oficial de Microchip por lo que debería funcionar. Sin embargo implementé el circuito y no funciona. El micro se apaga, pero no se despierta (todas las líneas de exploración tienen un nivel lógico bajo antes de irse a la suspensión, por lo que deben descargar el condensador).
La solución propuesta usa una resistencia de 47K para levantar el pin MCLR, pero en la hoja de datos oficial del 16F57 recomiendan una resistencia de < 40K para el uso correcto. Intenté usar un 47K y la imagen no comenzó, así que, pensando en un error tipográfico, utilicé un 4.7K que resultó bien para comenzar la imagen (aunque no resolvió el problema de activación).
El voltaje a través del capacitor debería caer casi a cero para activar el pin MCLR y provocar un despertar, pero parece que la línea de exploración, incluso en un cero lógico, no puede descargar el capacitor.
¿Tienes alguna pista de cómo resolver el problema? gracias!
P.S. el condensador en el esquema no tiene el signo "+", así que asumo que quieren un condensador no electrolítico.