Цитата(rx3apf @ Jan 5 2011, 17:55)

mA или uA ? Если именно миллиампер - это что-то совершенно дикое, даже активный микроконтроллер не может столько потреблять. Если микроампер - скорее, какое-то потребление через выход или pull-up резистор.
Это миллиамперы (при задействованном USART), микроамперы - при отключенном USART. Делаю
только инициализацию USART, данные не принимаются и не передаются.
Цитата
Если активно что-то типа таймера в асинхронном режиме или WDT - похоже. Если нет - то неприлично много.
Да, продолжает работать таймер - МК просыпается 1 раз в секунду (часы в МК работают), и снова засыпает. Поэтому потребляемый ток колеблется от 10 до, 13-15 мкА. Микроамперметр стрелочный использую, точнее замерить не могу.
10-15 мкА, это, насколько я помню, довольно близко к току саморазряда батареи 1,5В АА или ААА. Так что приемлемо. У меня три аккумулятора ААА используются в качестве автономного питания (~4,1 В).
Цитата
Еще раз: включенный USART сам по себе на потребление фактически не влияет.
Цитата
Потому и не помогает - не USART виноват.
Ничего в железе не меняю, единственно меняю в программе: в первом варианте - USART инициализируется, во втором - нет. В первом случае потребление около 90 миллиампер, во втором - 10-15 микроампер.
Цитата
Вот и надо разбираться, что куда утекает. А заодно и на остальную периферию посмотреть - не остался ли включенным аналоговый компаратор, нет ли включенных pull-up там, где не надо, не болтаются ли неподключенные входы в третьем состоянии...
Во время настройки МК сразу после включения делаю вот так:
Код
;Запретить АЦП, аналоговый компаратор и все, что не должно работать в
;режиме сна (и вообще в программе) для снижения энергопотребления:
ldi temp,(0<<ADEN);Запретить АЦП
out ADCSR,temp
ldi temp,(1<<ACD)|(0<<ACIE);Запретить аналоговый компаратор
out ACSR,temp
ldi temp,(1<<WDTOE)|(1<<WDE);Запретить WATCHDOG таймер
out WDTCR,temp
;Выключить WDT:
ldi temp,(0<<WDE)
out WDTCR,temp
Ну вот порт D перевел в третье сотояние - ток уменьшился до микроампер. Еще можно настроить его на выход, и установить все выводы в "0" - будет тот же результат. Хороший результат

А вот если его сконфигурить на вход с подтягивающим резистором или на выход, но выводы установить в "1", то потребление увеличивается до десятков миллиампер. Я выбрал третье состояние.
К выводам порта D подключен еще один МК - ATmega32, но тот отключается полностью, но, видимо, что-то все равно перетекает через него.
Если задействован USART, то как ни настраивай порт D, потребление не уменьшается.
Сообщение отредактировал James D. - Jan 5 2011, 13:17