Когда процессор исполняет команду sleep, он сбрасывает бит
Для пробуждения микроконтроллера по прерыванию флаг этого прерывания должен быть сброшен, а соответствующий бит маски прерывания — установлен, чтобы разрешить запрос прерывания от этого источника. Если флаг общего разрешения прерываний GIE (см. Рис. 7.3 на стр. 213) установлен, то после выполнения команды, следующей за командой sleep, процессор перейдет к процедуре обработки прерывания, как и при обычном отклике на запрос прерывания. Однако если бит GIE сброшен, запрещая реакцию на прерывания, то процессор не будет передавать управление в обработчик прерывания, а просто выполнит команду, следующую за sleep, и продолжит работу в обычном режиме. Обратите внимание, что в этом случае программист должен будет после выхода из спящего режима сбросить соответствующий флаг прерывания.
Если при сброшенном бите GIE разрешенное прерывание произойдет до выполнения команды sleep (на что указывает установленный флаг прерывания), то команда sleep будет выполнена как команда nop (нет операции). При этом бит
Независимо от причины, вызвавшей выход микроконтроллера из «спящего» режима, перед выполнением команды, следующей за sleep, формируется задержка длительностью 1024 такта fOSC. Эта задержка необходима для запуска тактового генератора и установления его сигнала. Данная задержка, показанная на Рис. 10.10, не формируется, если микроконтроллер использует тактовый генератор на
При выключенном сторожевом таймере ток ждущего режима IРD намного меньше. К примеру, в модели PIC16F87XA-I типичные значения тока IРD равны 1.5 мк (максимальное — 16 мкА) и 10.5 мкА (максимальное — 42 мкА) при выключенном и включенном сторожевом таймере соответственно. Указанные значения справедливы для VDD = 4 В, при этом все линии ввода/вывода микроконтроллера сконфигурированы как входы и подтянуты либо к VSS (как правило), либо к VDD.
Во всех микроконтроллерах PIC имеется встроенный