Pobór prądu ATmegi8 w stanie uśpienia

Jun 28, 2004 5 Replies

Witam męczę się od jakiegoś czasu z trybem uśpienia w Atmega8. Wszystko jest ok ale dziwi mnie to że uC w tym trybie pobiera aż 180uA a w instrukcji pisze że powinien o wiele wiele mniej i tutaj moje pytanie co mam zrobić aby obniżyć jeszcze ten pobór ?. Niżej zamieszczam program w AVR-GCC który przełącza w tryb obniżonego poboru. Niby to działa bo z 16mA pobór zjeżdża do 180uA ale że w instrukcji jest napisane coś około 10uA także 180uA mnie nie zadawala :(



#define __AVR_ATmega8__ ; #include <avr/io.h>



#include <avr/sleep.h>



void waitForRing(void) { set_sleep_mode(SLEEP_MODE_PWR_SAVE); sleep_mode(); }


int main(void) { waitForRing(); while(1); return(0); }



W stanie uśpienia pomierz napięcia na wszystkich nogach. Sprawdź, czy nie wystawiasz żadnej powodującej zwiększony pobór prądu (np. '0' gdy na zewnątrz doczepiony jest rezystor pull-up; albo w środku masz ustawiony pull-up a na zewnątrz podajesz sygnał '0'). Albo czy żaden pin nie wisi w powietrzu, czy linia /RESET jest prawidłowo podpięta. Czy te 180uA może wynika z dołączonego otoczenia, a nie samego procka? Możesz też spróbować wyłączyć przerwania (cli) przed wejściem w stan uśpienia - nigdy z niego bez resetu nie wyjdziesz, ale spokojnie będziesz mógł wszystko pomierzyć bez budzenia proca.

A co z watchdogiem, jak jest włączony to on żre te uA.

Tak ale z programu który umieściłem wynika że na żadną nogę nie wystawiam 0 ani 1. A po starcie wszystkie powinny być w wysokiej impedancji.

Albo czy żaden pin nie wisi

No jest przez 10k

Czy te 180uA

Hmm no niby tak. Właśnie nie jestem do końca przekonany czy to czasem nie otoczenie ale nie mogę go odlutować ;) bo sobie całą płytkę zniszczę ;( Tak pobieżnie oczywiście sprawdzałem to i owo (zwierałem tu rozwierałem tam ;) ale nic się nie zmieniało i zawsze mam te 180uA. Także na 80% to nie ma nic wspólnego z otoczeniem. Mam w układzie dużo kondensatorów czy to możliwe że to ich prąd upływności wywołuje taki efekt ? A czy czasem nie da się zmniejszyć może jakoś jeszcze bardziej częstotliwości taktowania zegara uC ? bo z tego co wyczytałem to w tym trybie uśpienia korzysta on w wewnętrznego oscylatora czyli 1Mhz może da się jeszcze bardziej zmniejszyć tę częstotliwość bo w końcu 1Mhz to dość dużo, chyba się da jakimś preskalerem ale czy to coś da ? narazie jestem w trakcie wgłębiania się w tamata ;) ale dobrze by było żeby ktoś mnie oświecił zanim sam znajdę rozwiązanie (bo jak znam życie trochę mi to zajmie ;(

Wyłączony wszystkie fusy są wyłączone. Inna sprawa to to że warchdog według dokumentacji pobiera tylko 20uA. A w tej chwili to według dokumentacji cały uC powinien pobierać 0.5uA !!! a pobiera 180uA ;(

Spróbuj odłączyć sam procek, czyli odlutować (podnieść) jedynie nogi od zasilania (VCC, AVCC) i zobacz ile pobiera reszta płytki. To może być wina jakichś kondensatorów...

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required