Схема устройства построена так, что питание на измерительные цепи и на индикацию берется непосредственно с выводов портов контроллера. Т.е. установив вывод порта в 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(); }
|