Większość mikrokontrolerów (np. AVR, MSP430, PIC itp.) Obsługuje wiele różnych trybów uśpienia. „Najgłębszy” tryb uśpienia to taki, który ma najniższy pobór mocy (np. „Wyłączanie”, „wyłączanie”), ale wszystkie systemy zegarowe są zwykle zatrzymywane w tych trybach i wydaje mi się, że to jedyny sposób na „ pobudka ”z nich odbywa się za pośrednictwem zewnętrznego bodźca (np. przerwania zmiany pinów, reset chipa). Czy coś brakuje? Czy istnieją wyjątkowo niskie metody generowania okresowego sygnału budzenia dla MCU?
Zakładając, że moim celem jest zminimalizowanie zużycia energii (tj. Śpij głęboko jak najdłużej, nie śpij tak krótko, jak to możliwe), a okresowo budząc się, aby wykonać funkcję, jaki jest typowy sposób na osiągnięcie tego rodzaju zachowania? Aby jeszcze bardziej uprościć sprawy, załóżmy, że moja funkcja jest bezstanowa (nie muszę niczego pamiętać z przeszłości, aby ją wykonać).
Odniosłem pewien sukces używając WDT na MSP430, aby uzyskać ten efekt. Właśnie sprawiłem, że moja główna rutyna będzie moją funkcją, a ostatnia linia umożliwiła wygaśnięcie timera watchdoga po pewnym czasie i przejście do LPM4.5 lub jakikolwiek inny tryb „głębokiego uśpienia”. Wynik netto to funkcja jest wykonywana, MCU śpi, WDT wygasa, a chip resetuje się, ad nauseum. Wydaje się, że działa, tylko zastanawiam się, czy istnieje „lepszy”, „bardziej elegancki” lub „bardziej energooszczędny” sposób uzyskania tego rodzaju zachowania?
Nie próbowałem jeszcze tego podejścia z AVR, ale myślę, że WDT jest bardziej „wymagający mocy” w AVR niż w MSP430, więc może być mniej atrakcyjny dla pracy przy niskiej mocy. Być może nie ma „uniwersalnego” podejścia do niskiej mocy i musisz korzystać z narzędzi oferowanych przez daną linię produktów? Wiem, że nowa linia picoPower ma wiele funkcji Whiz-Bang, takich jak Event System i Sleep Walking, które w niektórych przypadkach wcale nie wymagają, aby procesor był w stanie czuwania, jeśli możesz dopasować aplikację do tej struktury ...
OK, dość mojej wędrówki, niech tu będzie to, co będziesz musiał powiedzieć :)
Edytuj Konkretne przykłady ilustrujące techniki również byłyby fajne!