kurczak pisze:Przechodzenie z jednego trybu do kolejnego odbywa się całkiem normalnie, każde wciśnięcie przycisku powoduje przerwanie (INT0), przy czwartym wciśnięciu przycisku, uC powinien wejść w tryb Powerdown. A przy kolejnym miałby się wybudzić. W trybie uśpienia powinien pobierać z baterii jakieś pojedyncze mikroampery. Nie jestem jednak pewien, czy w ten sposób można zrealizować takie sterowanie. Prosiłbym o wasze rady.
Można.
Bardzo dobrze wybrałeś port pod INT0, gdyż można nim cpu z głębokiego stanu uśpienia zbudzić.
Nie wiem w czym piszesz, ale na przykładzie assemblera można zrobić to tak (Temp to rejest z górnej 16-tki):
0. jak złapiesz 4-ty tryb do potrzymaj program np. w pętli aż nie zostanie przycisk zwolniony i dopiero idź dalej w sleep`a (dobrze jest zabezpieczyć się przed odbiciami styków), bo inaczej uśpisz procesor i od razu go wybudzisz
1. musisz włączyć przerwanie generowane stanem na porcie (port oczywiście skonfigurowany jako wejściowy)
ldi Temp, 0b01000000 ; (1<<INT0)
out GIMSK, Temp
2. konfigurujesz procesor w najgłębszy tryb uśpienia (ten, co ma 0,2uA) i wskazujesz jakim stanem na porcie zostanie wygenerowane przerwanie i zbudzony procesor - np. L
ldi Temp,0b00110000 ; power-down - stan L
out mcucr,Temp
3. ja jeszcze dla pewności zeruję przerwanie (gdyby się ktoś w trakcie wstrzelił)
clr Temp
out GIFR,Temp ; erase INT0
4. ważna rzecz - przerwania muszą być odmaskowane
sei
5. no i usypiasz go
sleep; ; set CPU in Power-down mode
a po zbudzeniu musisz poprzywracać jego funkcje życiowe, które być może przed uśpieniem wyłączyłeś, w szczególności jak używasz jeszcze gdzieś sleep`a to zmieniasz poziom uspienia na wyższy itd.
ldi Temp,0b00100000 ; sleep (1<<SE) - idle
out mcucr,Temp
Ważna rzecz - jak używasz ADC z wewnętrznym Vref - to przed uśpieniem wyłączaj ADC, bo będzie Ci ciągnął niecałe 1mA - co dziwne Vref nie jest w power-down z automatu odłączane.
kurczak pisze:Przetwornicy również jeszcze nie wybrałem, ale na razie chciałbym same tryby opracować. A może ktoś z was mógłby opisać zmianę trybów przez odłączenie minusa? Ja jakoś nie potrafię sobie tego wyobrazić. Pozdrawiam
Poszukaj proszę na forum sam kilka razy opisywałem tu różne sposoby realizacji tego.
Pozdrawiam,