Po przeczytaniu odpowiedniego rozdziału podręcznika programowania AVR-ów wciąż mam kilka wątpliwości, które chciałbym rozwiać:
1) Co tak właściwie dzieje się po wprowadzeniu mikrosterownika w stan uśpienia? Jakie operacje będą wykonywane, a jakie nie? Załóżmy, że przy pomocy rejestru MCUCR konfiguruję tryb ilde, w którym aktywna jest większość modułów. Mam rozumieć, że wywołanie funkcji sleep_mode spowoduje zatrzymanie wykonywania operacji w głównej funkcji programu, ale wciąż będą wykonywane funkcje obsługi przerwań czynnych modułów, np. USART, nawet jeśli nie zawierają one instrukcji wybudzenia mikrosterownika? 2) Co się stanie w przypadku wprowadzenia mikrosterownika w tryb power-down, podczas gdy do portu USART podłączone jest aktywne urządzenie? Do momentu wybudzenia mikrosterownika np. przez INT0 przesyłane dane będą po prostu przepadały, czy też taka sytuacja stwarza jakieś zagrożenie dla uC albo podłączonego modułu? 3) Po wybudzeniu układu (np. przez przerwanie zewnętrzne) w którym miejscu program wznawia swoją pracę? Dokładnie tam, gdzie znajdował się przed uśpieniem, czy w jakimś innym punkcie? 4) Rozumiem, że w stanie uśpienia wszystkie wyłączone moduły (liczniki, PWM) zachowują swoją konfigurację i po wybudzeniu automatycznie rozpoczynają przerwaną pracę?- posted
11 years ago