Страница 1 из 1

Программирование спящего режима Atmega16a

Добавлено: Пт янв 31, 2014 06:53:16
chernyshov_nikita
Здравствуйте, на днях решил заняться вопросом энергосбережения, а именно переведением МК в "спящий режим". Почитав несколько статей на эту тему, я, признаюсь, мало что понял, разобрался с различными типами режимов, но вот программы с хорошим объяснением я так и не нашел.
На плате у меня МК и пара светодиод-фототранзистор, на ножке, к которой подключен фототранзистор постоянно 1. Хотелось бы, чтобы МК переходил в спящий режим и выходил из него, когда на той самой ножке напряжения нет, а также после включения реагировал довольно шустро. Подскажите, возможно ли это сделать, и если да, то как?
Заранее спасибо

Re: Программирование спящего режима Atmega16a

Добавлено: Пт янв 31, 2014 07:53:32
akl
Ток через светодиод, по мне, съест все преимущества спящего режима. А вот если будет просто фототранзистор, при освещении которого выдаётся логический 0 на лапу (INT0, INT1,INT2), то уже можно использовать SLIP-режимы. По мне главное не вход в SLIP, а выход из него. Для чего, при входе в разрешённое прерывание по низкому уровню на (INT0, INT1) или фронту/спаду на INT2 дождаться выполнения программной задержки, необходимой для запуска и стабилизации частоты тактирования и выйти из прерывания по RET, т.к. при этом I-бит глобального разрешения прерываний не устанавливается и камень спокойно может продолжать работу.

Re: Программирование спящего режима Atmega16a

Добавлено: Сб фев 01, 2014 15:07:47
pryanic
Даташит на кристалл поможет. Есть еще отличная книга Евстифеева - Микроконтроллеры AVR семейства Mega. Там разобраны очень подробно контроллеры этого семейства.

Re: Программирование спящего режима Atmega16a

Добавлено: Вс фев 09, 2014 23:20:01
Eugene.Negrobov
Светодиоды и энергосбережение- штуки несовместимые, их в батареечных устройствах вообще быть не должно.

Если просто интересно, как энергосбережение работает:
Там есть регистр MCUCR, в нем надо выставить бит, разрешающий спящий режим и еще пару выбирающих то, какой конкретно будет заюзан режим, их там много, но я лично всегда юзаю Power Down, самый экономичный. Вызывается слип инструкцией sleep.
Выходят из слипа прерываниями, при Power Down это внешние прерывания, режим low level идеально подходит в твоем случае.