Uso PIC16F1825 para comunicarme a través de UART (async) con un dispositivo externo. Funcionando con baterías, tengo que gastar la menor cantidad de energía posible.
Como mi dispositivo externo puede no transmitir datos durante minutos, pensé en poner el microcontrolador PIC en modo SLEEP mientras esperaba datos.
Lamentablemente no es sencillo, porque el UART asíncrono requiere un oscilador principal (manual PIC). Implementar UART manualmente puede resolver el problema, si el PIC pudiera recuperarse de SLEEP rápidamente. Mi dispositivo PIC16F1825 requiere 1024 x Tosc
para comenzar a trabajar después de SLEEP. Es una manera de reducir la velocidad :(
UART: 115200N8
Mi pregunta es: ¿Cómo puedo ahorrar una cantidad considerable de energía durante el tiempo entre transmisiones?
PS Puedo cambiarme a algún otro microcontrolador dentro de la misma región de precio y tamaño de empaque (4 mm x 4 mm).