Witam! Pracuję na urządzeniem zasilanym z baterii (ma wystarczać na 3 lata),program piszę w avrgcc; uC obsługuje panel LCD i co kilka sekund wykonuje serię pomiarów. Procesor jest w trybie IDLE, jedynie odświeżanie LCD robię w przerwaniu co 20ms, liczę sobie upływające sekundy, czasem coś zmierzy i dalej procek "idzie spać". Oszacowałem, że średnio pobierany prąd powiniem być rzędu 30uA. A nie jest - jakieś
1.2mA. Zrobiłem więc taki eksperyment: napisałem program w którym procek tylko śpi (cały czas 32kHz i 3 V zasilania); efekt: prąd praktycznie niemierzalny na moim multimetrze. Drugi program to niekończąca się pętla- skok pod ten sam adres; efekt: około 0.84mA - za dużo, według karty katalogowej powinno być około 40uA, czyli gdzieś "bokiem" ucieka mi jakieś 800uA Przy większych częstotliwościach zegara prąd jest zasadniczo zgodny z dokumentacją - te 800uA zaczyna być pomijalne. Aktualnie w układzie jest tylko uC i reset: rezystor 100k podciągnięty do Vcc i kondensator 4.7uF do masy. Sprawdziłem coś takiego:
.include "m8515def.inc"
sbi ACSR,7 ;analog comparator - off ldi r16, 0xff ; out PORTA, r16 ;all ports are HIGH out PORTB, r16 out PORTC, r16 out PORTD, r16 out PORTE, r16
start: rjmp start ;never ending loop
Wyłączyłem komparator (więc Vref także), a na porty w trybie IN dałem "1", żeby sprawdzić czy jakoś portem mi ten prąd nie ucieka. Efekt: za wyjątkiem GND i pinów nie połączonych (NC) wszędzie jest "1". I to dokładnie taka jak VCC, a prądu pobiera tyle samo. Wymieniłem ten uC na nową sztukę i to samo, czyżby jakaś seria wadliwa?
Nie mam pomysłu co robić dalej, a prąd jest dla mnie za duży - bateryjka nie wytrzyma tych 3 lat. Nic konkretnego (jeszcze? ;- )) nie "wygooglałem" a Atmel nie spieszy się z odpowiedzią.
Dziękuję za uwagę, może Wy mi pomożecie :-)