La mayoría de los microcontroladores (por ejemplo, AVR, MSP430s, PIC, etc.) admiten varios modos de suspensión diferentes. El modo de suspensión "más profundo" es el que promueve el consumo de energía más bajo (por ejemplo, "Apagado", "Apagar"), pero todos los sistemas de reloj se detienen normalmente en estos modos y me parece que la única forma de " Despertar "de ellos es a través de estímulos externos (por ejemplo, interrupciones de cambio de pin, reinicio de chip) ¿Me estoy perdiendo de algo? ¿Existen métodos de baja potencia para generar una señal de activación periódica para una MCU?
Suponiendo que mi objetivo es minimizar el consumo de energía (es decir, dormir profundamente durante el mayor tiempo posible, permanecer despierto lo más brevemente posible), mientras se despierta periódicamente para ejecutar una función, ¿cuál es la forma común de lograr este tipo de comportamiento? Para simplificar aún más las cosas, supongamos que mi función es sin estado (no tengo que recordar nada del pasado para realizarla).
He tenido cierto éxito al usar el WDT en el MSP430 para obtener este efecto. Acabo de hacer que mi rutina principal sea mi función, con la última línea que permite que el temporizador de vigilancia caduque después de un cierto período y vaya a LPM4.5 o como se llame al modo de "suspensión profunda". El resultado neto es la función que se realiza, el MCU duerme, el WDT caduca y el chip se reinicia, hasta el fondo. Parece funcionar, solo me pregunto si hay una forma "mejor" o "más elegante" o "más eficiente en el uso de la energía" para obtener este tipo de comportamiento.
Todavía no he probado este enfoque con un AVR, pero creo que el WDT tiene más "hambre de energía" en los AVR que en el MSP430, por lo que puede ser menos atractivo para el trabajo de baja potencia. Tal vez no exista un enfoque "universal" para la baja potencia, ¿y tiene que usar las herramientas que ofrece una línea de productos determinada? Sé que la nueva línea picoPower tiene muchas características geniales como el sistema de eventos y Sleep Walking que, en algunos casos, apenas requieren que la CPU esté completamente despierta si puede hacer que su aplicación encaje en esa estructura ...
Bien, basta de mi deambular, deja aquí lo que tendrás que decir :)
Editar ¡Los ejemplos concretos que ilustran técnicas también serían geniales!