System Interface
9
9 – 22
If the external clock is unstable when the processor exits powerdown, then
the XTALDELAY control bit can be used. This allows time for the external
clock to stabilize by inserting an additional 4096-cycle delay before the
processor starts to execute instructions. The start-up delay can only be used
when the processor is taken out of powerdown mode with the
PWD
pin.
If the processor is taken out of powerdown by
RESET
and the clock is stable
and at the same frequency as before powerdown,
RESET
needs to be held for
only 5 cycles.
9.7.4.2 Systems Using A Crystal And The Internal Oscillator
A trade-off can be made so that a fast start-up is possible, but power is
consumed by leaving the oscillator running during powerdown. If a fast
start-up is desired, then you must clear bits 14 (XTALDELAY) and 15
(XTALDIS) of the Powerdown Control Register to 0 before entering
powerdown. This selects no additional delay after start-up from powerdown
and drives the external crystal during powerdown. In this configuration, the
oscillator will continue to operate and the processor will start executing
instructions in less than 100 cycles after the low to high signal transition at
the
PWD
pin. The XTAL pin will also be driven and the powerdown power
consumption will be higher than the 1 mW specification. The following code
example shows the powerdown interrupt routine.
{ Sample Powerdown Code }
{ Located at interrupt vector address 0x002C }
pwd_int: ax0 = 0x0000; { enable crystal, no delay }
dm(0x3FEF) = ax0;
idle;
rti;
If lowest possible power consumption is required, then you must set the
XTALDELAY and XTALDIS bits to 1 before entering powerdown. This selects
the additional 4096 cycle delay to allow the oscillator to start and the phase
locked loop to lock after start-up and disables the drive to the XTAL pin
during powerdown. The following code example shows the powerdown
interrupt routine.
{ Sample Powerdown Code }
{ Located at interrupt vector address 0x002C }
pwd_int: ax0 = 0xC000; { disable crystal, delay }
dm(0x3FEF) = ax0;
idle;
rti;