A maioria dos microcontroladores (por exemplo, AVRs, MSP430s, PICs, etc) suporta vários modos de suspensão diferentes. O modo de suspensão "mais profundo" é aquele que propõe o menor consumo de energia (por exemplo, "Desligar", "Desligar"), mas todos os sistemas de relógio geralmente são interrompidos nesses modos e parece-me que a única maneira de " acordar "a partir deles é via estímulo externo (por exemplo, interrupção da troca de pinos, reinicialização do chip). Estou esquecendo de algo? Existem métodos de potência incrivelmente baixa para gerar um sinal de ativação periódica para um MCU?
Assumindo que meu objetivo é minimizar o consumo de energia (ou seja, dormir profundamente o maior tempo possível, permanecer acordado o mais breve possível), enquanto acorda periodicamente para executar uma função, qual é a maneira comum de atingir esse tipo de comportamento? Para simplificar ainda mais, vamos supor que minha função seja sem estado (não preciso me lembrar de nada do passado para executá-la).
Eu tive algum sucesso usando o WDT no MSP430 para obter esse efeito. Acabei de fazer minha rotina principal ser minha função, com a última linha permitindo que o timer do watchdog expire após um certo período e entrando no LPM4.5 ou seja lá como o modo "sono profundo" for chamado. O resultado líquido é que a função é executada, o MCU dorme, o WDT expira e o chip é redefinido ad nauseum. Parece funcionar, apenas imaginando se existe uma maneira "melhor" ou "mais elegante" ou "mais eficiente em termos de energia" de obter esse tipo de comportamento?
Ainda não tentei essa abordagem com um AVR, mas acho que o WDT tem mais "consumo de energia" nos AVRs do que no MSP430, por isso pode ser menos atraente para trabalhos com baixo consumo de energia. Talvez não exista uma abordagem "universal" para a baixa potência e você precise usar as ferramentas oferecidas por uma determinada linha de produtos? Sei que a nova linha picoPower possui muitos recursos como o Event System e Sleep Walking que, em alguns casos, dificilmente exigem que a CPU esteja ativa, se você pode fazer seu aplicativo se encaixar nessa estrutura ...
OK o suficiente da minha perambulação, vamos aqui o que você terá a dizer :)
Editar Exemplos concretos ilustrando técnicas também seriam legais!