Здравствуйте, на днях решил заняться вопросом энергосбережения, а именно переведением МК в "спящий режим". Почитав несколько статей на эту тему, я, признаюсь, мало что понял, разобрался с различными типами режимов, но вот программы с хорошим объяснением я так и не нашел.
На плате у меня МК и пара светодиод-фототранзистор, на ножке, к которой подключен фототранзистор постоянно 1. Хотелось бы, чтобы МК переходил в спящий режим и выходил из него, когда на той самой ножке напряжения нет, а также после включения реагировал довольно шустро. Подскажите, возможно ли это сделать, и если да, то как?
Заранее спасибо
Программирование спящего режима Atmega16a
-
chernyshov_nikita
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Сб апр 13, 2013 10:29:21
- Реклама
Re: Программирование спящего режима Atmega16a
Ток через светодиод, по мне, съест все преимущества спящего режима. А вот если будет просто фототранзистор, при освещении которого выдаётся логический 0 на лапу (INT0, INT1,INT2), то уже можно использовать SLIP-режимы. По мне главное не вход в SLIP, а выход из него. Для чего, при входе в разрешённое прерывание по низкому уровню на (INT0, INT1) или фронту/спаду на INT2 дождаться выполнения программной задержки, необходимой для запуска и стабилизации частоты тактирования и выйти из прерывания по RET, т.к. при этом I-бит глобального разрешения прерываний не устанавливается и камень спокойно может продолжать работу.
Re: Программирование спящего режима Atmega16a
Даташит на кристалл поможет. Есть еще отличная книга Евстифеева - Микроконтроллеры AVR семейства Mega. Там разобраны очень подробно контроллеры этого семейства.
- Eugene.Negrobov
- Мучитель микросхем
- Сообщения: 472
- Зарегистрирован: Ср фев 15, 2012 09:00:34
- Откуда: Киев
Re: Программирование спящего режима Atmega16a
Светодиоды и энергосбережение- штуки несовместимые, их в батареечных устройствах вообще быть не должно.
Если просто интересно, как энергосбережение работает:
Там есть регистр MCUCR, в нем надо выставить бит, разрешающий спящий режим и еще пару выбирающих то, какой конкретно будет заюзан режим, их там много, но я лично всегда юзаю Power Down, самый экономичный. Вызывается слип инструкцией sleep.
Выходят из слипа прерываниями, при Power Down это внешние прерывания, режим low level идеально подходит в твоем случае.
Если просто интересно, как энергосбережение работает:
Там есть регистр MCUCR, в нем надо выставить бит, разрешающий спящий режим и еще пару выбирающих то, какой конкретно будет заюзан режим, их там много, но я лично всегда юзаю Power Down, самый экономичный. Вызывается слип инструкцией sleep.
Выходят из слипа прерываниями, при Power Down это внешние прерывания, режим low level идеально подходит в твоем случае.
I'm on a huge rock, flying through space!

