АЦП отключать

sim31
sim31 аватар
Offline
Зарегистрирован: 26.07.2017

Пытаюсь уменьшить потребление микроконтроллера для работы от батарейки типа CR2032. На данный момент потребление Ардуины 0.2 мА (спит в режиме IDLE и по прерыванию от Таймера0 просыпается каждые 8мс естественным образом, для пробуждения ничего не дописывал). И по мелочам из статьи:

http://gammon.com.au/power

Этого вполне достаточно, но думаю можно и еще снизить. Основной потребитель, похоже АЦП. Полностью отключить его не могу, иногда нужен. Мне кажется загрузчик Ардуины производит с АЦП какие-то свои манипуляции, что порождает странное поведение. Библиотека power АЦП толком не отключает. Если отключать напрямую

ADCSRA=0 или первый бит ADCSRA=ADCSRA & B01111111

АЦП отключается, потребление падает.

Но в процессе работы иногда нужен АЦП. Включаю, присваивая старое значение

ADCSRA=ADCSRA_OLD_SAVED

АЦП работает, получаю значение и снова обнуляю ADCSRA. И тут потребление в режиме сна не падает, а растет до 1.6 мА, такое впечатление, что АЦП ловит какой-то глюк и не любит чтобы биты конфигурации дергали часто. Возможно Ардуина что-то от себя прописывает в работу АЦП.

Если же АЦП изначально выключить или вообще не трогать, всё работает нормально.

splans
splans аватар
Offline
Зарегистрирован: 06.07.2015

можно скетч посмотреть, учусь, борюсь, еп...сь с этим сном, помогите примером