Hi all,
The solution to this is probably very straightforward but I'm trying to use the watchdog as a wakeup timer based on the roughly 4ms 'no postscaler (=1)' setting...
The inc file is as follows:
Code:
NOLIST
ifdef PM_USED
LIST
"Error: PM does not support this device. Use MPASM."
NOLIST
else
LIST
LIST p = 18F26J53, r = dec, w = -311, f = inhx32
INCLUDE "P18F26J53.INC" ; MPASM Header
CONFIG XINST = OFF
CONFIG PLLDIV = 2;
CONFIG WDTPS = 16;
CONFIG WDTEN = ON
CONFIG OSC = HSPLL; INTOSCPLL
CONFIG ADCSEL = BIT12
CONFIG RTCOSC = T1OSCREF
CONFIG IESO = OFF
CONFIG CFGPLLEN = ON
CONFIG CPUDIV = OSC1
CONFIG CLKOEC = OFF
CONFIG SOSCSEL = LOW
CONFIG DSBOREN = OFF
NOLIST
endif
LIST
BLOCK_SIZE EQU 64
...whilst the PBP program is:
Code:
Include "modedefs.bas"
DEFINE OSC 24
ancon0 = %11111111
ancon1 = %00011111
intcon = 0
intcon2 = %11110101
intcon3 = %00000000
blue_led var portb.2
red_led var portb.1
ADCON0.0 = 0
ADCON1 = 15
trisa = %00000000
trisb = %10100000
trisc = %00000000
pmdis0 = %11111101
pmdis1 = %11111101
pmdis2 = %11111111
pmdis3 = %11111111
WDTCON.0 = 1
main:
high red_led
low blue_led
sleep 5
@ nop
high blue_led
low red_led
sleep 5
@ nop
goto main
Essentially, I just want the board to go to sleep minimising current but wakeup every 4 ms or so, switch and LED, or do something, and go back to sleep.
But... the LED switching frequency seems to be a function of the SLEEP value as opposed to the WDT postscaler value. I assumed that once the device was asleep, that was it fo rthe SLEEP command and when it woke up, it was past that, through the NOP command and onto the next line of code... and hence the value of the SLEEP command was meaningless....
i.e. if I set the sleep values to SLEEP 1, the LED switching frequency is far quicker than for SLEEP 5...
Please help...
Regards
Jimbo
Bookmarks