Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
368 Часть ///. Практическое программирование микроконтроллеров АVR Из приведенных цифр следует, что в условиях дефицита питания мы все время вы нуждены балансировать между тремя пок'азателями: функциональностью устройст ва, его потреблением и приемлемыми габаритами батареек. Огромные (и дорогие) батарейки типа С или D в случае переносных устройств мы отметаем сразу - этот вариант приемлем для автономного датчика, который где-то устанавливается ста ционарно. Потому устройство с потреблением более 1 мА- это всегда прибор, который включается цериоднчески, остальное время батарейки в нем просто хра нятся . В этом случае, действительно, можно было бы и не усложнять алгоритм энергосбережением, учитывая еще то, что в нем могут быть компоненты, потреб ляющие куда больше контроллера. А вот обеспечить потребление менее 1 мА бывает очень непросто, и опять же не из за энергосбережения контроллера, а от сложности подбора остальных компонентов. Датчики обычно потребляют только в момент запроса, потому с ними все относи тельно просто, а вот дисплей в режиме непрерывной работы уже приемлем только семисегментный ЖК-типа. MT- l OT l 1 потребляет около 30 мкА, тогда как переход к строчным (знакосинтезирующим) типам сразу повышает потребление почти на два порядка, - контроллер любого двухстрочного дисплея сам по себе потребляет примерно 1-2 мА, т. е. они съедят батарейку за пару месяцев. Далее мы покажем, как использовать МТ- 1 OTl 1 совместно с энергосберегающими режимами, а в гла ве 16 опишем управление и более потребляющими разновидностями, но на работу от батарейки в круглосуточном режиме они уже не рассчитаны . А если потребле ние вообще перестает играть серьезную роль, то можно себя побаловать куда более эргономичными и эстетичными ОLЕD-дисплеями. Потому случаи необходимости применения режимов энергосбережения ограниче ны по сути только схемами, в которых все компоненты основное время потребляют токи порядка десятков, в крайнем случае сотен микроампер. Тогда становится зна чимым различие между Power Down mode и Standbye mode, и имеет смысл заняться тонкими расчетами необходимой и достаточной тактовой частоты. Если вы не сумеете обеспечить такой режим, то можете с энергосбережением не возиться - не поможет. Программирование режима энергосбережения Само по себе программирование режима энергосбережения - без учета всех отме ченных нюансов - очень простое . Управляется этот режим битами SE (sleep еnаЫе) и sмх (s\eep mode), которые в большинстве младших моделей Mega, включая «на ши» ATmega8 и ATmega8535 , а также ATtiny23 1 3 , находятся в регистре мcucR (том же, который отвечает за внешние прерывания) . Некоторую сложность здесь пред ставляет только перенос кода на другие модели из-за того, что в разных моделях МК АVR управляющие биты бывают «разбросаны» по разным другим регистрам, и приходится смотреть в описание, чтобы не ошибиться . Например, в «ардуинов ском» АTmega328 и его младших братьях ATmega88/ l 68 для управления режимом s leep имеется отдельный регистр sмcR (жалко что ли регистров, если там область РВВ в памяти расширена и все равно использована не полностью?) А в традицион-
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==