PIC12F629/675
TABLE 9-8:
SUMMARY OF INTERRUPT REGISTERS
Value on all
other
Value on
Address Name
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
POR, BOD
RESETS
0Bh, 8Bh INTCON
GIE
EEIF
EEIE
PEIE
ADIF
ADIE
T0IE
—
INTE
—
GPIE
CMIF
CMIE
T0IF
—
INTF
—
GPIF
0000 0000 0000 000u
0Ch
8Ch
PIR1
PIE1
TMR1IF 00-- 0--0 00-- 0--0
TMR1IE 00-- 0--0 00-- 0--0
—
—
—
—
Legend: x = unknown, u = unchanged, - = unimplemented read as '0', q = value depends upon condition.
Shaded cells are not used by the Interrupt module.
9.5
Context Saving During Interrupts
9.6
Watchdog Timer (WDT)
During an interrupt, only the return PC value is saved
on the stack. Typically, users may wish to save key
registers during an interrupt, e.g., W register and
STATUS register. This must be implemented in
software.
The Watchdog Timer is a free running, on-chip RC
oscillator, which requires no external components. This
RC oscillator is separate from the external RC oscillator
of the CLKIN pin and INTOSC. That means that the
WDT will run, even if the clock on the OSC± and OSC2
pins of the device has been stopped (for example, by
execution of a SLEEP instruction). During normal
operation, a WDT time-out generates a device RESET.
If the device is in SLEEP mode, a WDT time-out
causes the device to wake-up and continue with normal
operation. The WDT can be permanently disabled by
programming the configuration bit WDTE as clear
(Section 9.±).
Example 9-2 stores and restores the STATUS and W
registers. The user register, W_TEMP, must be defined
in both banks and must be defined at the same offset
from the bank base address (i.e., W_TEMP is defined
at 0x20 in Bank 0 and it must also be defined at 0xA0
in Bank ±). The user register, STATUS_TEMP, must be
defined in Bank 0. The Example 9-2:
• Stores the W register
9.6.1
WDT PERIOD
• Stores the STATUS register in Bank 0
• Executes the ISR code
The WDT has a nominal time-out period of ±8 ms, (with
no prescaler). The time-out periods vary with tempera-
ture, VDD and process variations from part to part (see
DC specs). If longer time-out periods are desired, a
prescaler with a division ratio of up to ±:±28 can be
assigned to the WDT under software control by writing
to the OPTION register. Thus, time-out periods up to
2.3 seconds can be realized.
• Restores the STATUS (and bank select bit
register)
• Restores the W register
EXAMPLE 9-2:
SAVING THE STATUS AND
W REGISTERS IN RAM
MOVWF W_TEMP
;copy W to temp register,
could be in either bank
;swap status to be saved into W
;change to bank 0 regardless of
current bank
The CLRWDTand SLEEPinstructions clear the WDT
and the prescaler, if assigned to the WDT, and prevent
it from timing out and generating a device RESET.
SWAPF STATUS,W
STATUS,RP0
BCF
MOVWF STATUS_TEMP ;save status to bank 0 register
:
:(ISR)
The TO bit in the STATUS register will be cleared upon
a Watchdog Timer time-out.
:
SWAPF STATUS_TEMP,W;swap STATUS_TEMP register into
W, sets bank to original state
9.6.2
WDT PROGRAMMING
CONSIDERATIONS
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
;move W into STATUS register
;swap W_TEMP
;swap W_TEMP into W
It should also be taken in account that under worst case
conditions (i.e., VDD = Min., Temperature = Max., Max.
WDT prescaler) it may take several seconds before a
WDT time-out occurs.
DS41190C-page 64
2003 Microchip Technology Inc.