Схема устройства построена так, что питание на измерительные цепи и на индикацию берется непосредственно с выводов портов контроллера. Т.е. установив вывод порта в 0 или переведя его в состояние input при PUD=1 - снимаем питание с этих схем... Более того - PUD=1 постоянно
После перехода в Power Down mode потребление падает до 40 мкА. Меня бы устроили 5...6, хотя заявлено:
Power Down mode, WDT disabled, VCC = 3V --> 0.3...3 µA
Напрашиваются следующие вопросы:
1. В какое состояние переводить выводы портов: output и 0 на выходе или просто на input
2. Использую внутренний RC oscillator. Для Power Down mode написано:
In this mode, the External Oscillator is stopped
но ничего не сказано о внутреннем RC. (WDT не использую)
Вот подпрограмма перевода в PowerDown:
void DeepSleep(void){
CLI();
WDTCR = (1<<WDCE) + (1<<WDE) + 0x07;
WDTCR &= ~(1<<WDE);
TCCR0 = 0;
TIMSK = 0;
TIFR = 0x66; //сброс флагов прерываний от таймеров
MCUCR = (1<<PUD) + (1<<SE) + (1<<SM1); //разрешим sleep и выберем режим PowerDown
ACSR &= ~(1<<ACIE); //выключим компаратор
ACSR |= (1<<ACD);
ADCSR = 0; //выключим АЦП
ADMUX = 0; //
DDRA = 0;
PORTA = 0;
DDRB = 0;
PORTB = 0;
GIMSK = (1<<PCIE1);
GIFR |= (1<<PCIF);
SEI();
asm("sleep \n");
Init();
}