Microchip Technology Microstick for the 5V PIC24F K-series DM240013-2 DM240013-2 Ficha De Dados

Códigos do produto
DM240013-2
Página de 338
PIC24FV16KM204 FAMILY
DS30003030B-page 132
 
 2013 Microchip Technology Inc.
10.2.2
IDLE MODE
Idle mode includes these features:
• The CPU will stop executing instructions.
• The WDT is automatically cleared.
• The system clock source remains active. By 
default, all peripheral modules continue to operate 
normally from the system clock source, but can 
also be selectively disabled (see 
). 
• If the WDT or FSCM is enabled, the LPRC will 
also remain active.
The device will wake from Idle mode on any of these
events:
• Any interrupt that is individually enabled
• Any device Reset
• A WDT time-out
On wake-up from Idle, the clock is reapplied to the CPU
and instruction execution begins immediately, starting
with the instruction following the PWRSAV instruction or
the first instruction in the ISR.
10.2.3
INTERRUPTS COINCIDENT WITH 
POWER SAVE INSTRUCTIONS
Any interrupt that coincides with the execution of a
PWRSAV
 instruction will be held off until entry into Sleep
or Idle mode has completed. The device will then
wake-up from Sleep or Idle mode.
10.2.3.1
Power-on Resets (
PORs
)
V
DD
 voltage is monitored to produce PORs. When a true
POR occurs, the entire device is reset.
10.3
Ultra Low-Power Wake-up
The Ultra Low-Power Wake-up (ULPWU) on pin, RB0,
allows a slow falling voltage to generate an interrupt
without excess current consumption.
To use this feature:
1.
Charge the capacitor on RB0 by configuring the
RB0 pin to an output and setting it to ‘1’.
2.
Stop charging the capacitor by configuring RB0
as an input.
3.
Discharge the capacitor by setting the ULPEN
and ULPSINK bits in the ULPWCON register.
4.
Configure Sleep mode.
5.
Enter Sleep mode.
When the voltage on RB0 drops below V
IL
, the device
wakes up and executes the next instruction.
This feature provides a low-power technique for
periodically waking up the device from Sleep mode.
The time-out is dependent on the discharge time of the
RC circuit on RB0.
When the ULPWU module wakes the device from
Sleep mode, the ULPWUIF bit (IFS5<0>) is set. Soft-
ware can check this bit upon wake-up to determine the
wake-up source.
See 
 for initializing the ULPWU module.
EXAMPLE 10-2:
ULTRA LOW-POWER 
WAKE-UP INITIALIZATION
A series resistor, between RB0 and the external
capacitor provides overcurrent protection for the
AN2/ULPWU/RB0 pin and enables software calibration
of the time-out (see 
FIGURE 10-1:
SERIES RESISTOR
A timer can be used to measure the charge time and
discharge time of the capacitor. The charge time can
then be adjusted to provide the desired delay in Sleep.
This technique compensates for the affects of temper-
ature, voltage and component accuracy. The peripheral
can also be configured as a simple, programmable
Low-Voltage Detect (LVD) or temperature sensor.
/
/*******************************
// 1. Charge the capacitor on RB0
//*******************************
    TRISBbits.TRISB0 = 0;
    LATBbits.LATB0 = 1;
    for(i = 0; i < 10000; i++) Nop();
//*****************************
//2. Stop Charging the capacitor
//   on RB0
//*****************************
    TRISBbits.TRISB0 = 1;
//*****************************
//3. Enable ULPWU Interrupt
//*****************************
IFS5bits.ULPWUIF = 0;
IEC5bits.ULPWUIE = 1;
IPC21bits.ULPWUIP = 0x7;
//*****************************
//4. Enable the Ultra Low Power
//   Wakeup module and allow
//   capacitor discharge
//*****************************
    ULPWCONbits.ULPEN = 1;
    ULPWCONbit.ULPSINK = 1;
//*****************************
//5. Enter Sleep Mode
//*****************************
    Sleep();
//for sleep, execution will
//resume here
R
1
C
1
RB0