PIC12C67X
DS30561A-page 54 Preliminary 1997 Microchip Technology Inc.
8.8 Power-down Mode (SLEEP)
Power-down mode is entered by executing a SLEEP
instruction.
If enabled, the Watchdog Timer will be cleared but
keeps running, the PD
bit (STATUS<3>) is cleared, the
T
O (STATUS<4>) bit is set, and the oscillator dr iver is
turned off. The I/O por ts maintain the status they had,
before the SLEEP instruction was executed (driving
high, low, or hi-impedance).
For lowest current consumption in this mode, place all
I/O pins at either V
DD, or VSS, ensure no external cir-
cuitry is drawing current from the I/O pin, power-down
the A/D, disable external clocks. Pull all I/O pins, that
are hi-impedance inputs, high or low externally to av oid
switching currents caused by floating inputs. The
T0CKI input if enabled should also be at V
DD or VSS for
lowest current consumption. The contribution from onchip pull-ups on GPIO should be considered.
The MCLR
pin if enabled must be at a logic high level
(V
IHMC).
8.8.1 WAKE-UP FROM SLEEP
The device can wake up from SLEEP through one of
the following events:
1. External reset input on MCLR
pin.
2. Watchdog Timer Wake-up (if WDT was
enabled).
3. GP2/INT interrupt, interrupt GPIO por t change,
or some Peripheral Interrupts.
External MCLR
Reset will cause a device reset. All
other events are considered a continuation of program
execution and cause a "wake-up". The T
O and PD bits
in the STATUS register can be used to determine the
cause of device reset. The PD
bit, which is set on
power-up, is cleared when SLEEP is in vok ed. The T
O bit
is cleared if a WDT time-out occurred (and caused
wake-up).
The following peripheral interrupt can wake the device
from SLEEP:
1. A/D conversion (when A/D clock source is RC).
Other peripherals can not generate interrupts since
during SLEEP, no on-chip Q clocks are present.
When the SLEEP instruction is being executed, the ne xt
instruction (PC + 1) is pre-fetched. For the device to
wake-up through an interrupt event, the corresponding
interrupt enable bit must be set (enabled). Wake-up is
regardless of the state of the GIE bit. If the GIE bit is
clear (disabled), the device continues execution at the
instruction after the SLEEP instruction. If the GIE bit is
set (enabled), the device executes the instruction after
the SLEEP instr uction and then branches to the interrupt address (0004h). In cases where the execution of
the instruction following SLEEP is not desirable, the
user should have a NOP after the SLEEP instruction.
8.8.2 WAKE-UP USING INTERRUPTS
When global interrupts are disabled (GIE cleared) and
any interrupt source has both its interrupt enable bit
and interrupt flag bit set, one of the following will occur:
• If the interrupt occurs before the the execution of
a SLEEP instruction, the SLEEP instruction will
complete as a NOP. Therefore , the WDT and WDT
postscaler will not be cleared, the T
O bit will not
be set and PD
bits will not be cleared.
• If the interrupt occurs during or after the execution of a SLEEP instruction, the device will immediately wake up from sleep . The SLEEP instruction
will be completely executed before the wake-up.
Therefore, the WDT and WDT postscaler will be
cleared, the T
O bit will be set and the PD bit will
be cleared.
Even if the flag bits were checked before executing a
SLEEP instruction, it may be possible for flag bits to
become set before the SLEEP instruction completes. To
determine whether a SLEEP instruction executed, test
the PD
bit. If the PD bit is set, the SLEEP instruction was
executed as a NOP.
To ensure that the WDT is cleared, a CLRWDT instruc-
tion should be executed before a SLEEP instruction.