Спящий режим Atmel AVR и обработка битов Sleep Enable

Я пытаюсь понять, как запрограммировать avr в модели, основанной на событиях, где он реагирует на то, что происходит вокруг него.

После прочтения руководства по моему чипу (ATmega16a) и поиска в Google я так и не смог найти точного ответа на свой вопрос.

Оба руководства по avr-libc я нашел http://www.atmel.com/webdoc/AVRLibcReferenceManual/group__avr__sleep.html и http://www.nongnu.org/avr-libc/user-manual/group__avr__sleep.html настаивает на том, что рекомендуется включать спящий режим (установить бит SE) непосредственно перед входом в спящий режим и отключать его после (очисткой SE). Какой цели служит эта битовая перетасовка? Почему я не могу просто включить спящий режим один раз при сбросе, а затем свободно войти в него, просто выполнив инструкцию «сна» там, где это необходимо?


person Nikita Kipriyanov    schedule 18.02.2016    source источник
comment
Ты сможешь. Чтобы избежать перехода микроконтроллера в спящий режим, если только это не является целью программиста, рекомендуется записывать бит включения спящего режима (SE) в единицу непосредственно перед выполнением инструкции SLEEP и очищать его сразу после пробуждения. Вы можете игнорировать рекомендацию, если хотите.   -  person uncleO    schedule 19.02.2016


Ответы (1)


Вы можете просто включить спящий режим один раз при сбросе, а затем свободно войти в сон.

Очистив бит SE, вы можете предотвратить сон в ситуациях, когда вам это нужно.

person Gabriel Cséfalvay    schedule 06.08.2016