Hi Henrik,
Just to thank you again. Installed the 32.768KHz xtal with a 12pF cap on each leg to earth and it now all runs. Also, I now have a clearer head and all the settings now make sense in my head. Current drops from around 2mA for my test circuit to about 100uA, which I believe is roughly the norm. This should DRAMATICALLY increase the lifetime of the battery!
The code I now have is below for the benefit of others.
Best regards
Jimbo
Code:
define OSC 16
DEFINE HSER_BAUD 19200
DEFINE HSER_CLROERR 1 ' Auto clear over-run errors
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
blue_LED var portb.5 'prototype =a3, sleep test cct b5
trisa = %00000000
trisd = %00000000
trisc = %00000000
trisb = %00001000
adcon0.0 = 0
ANSELA = 0
ANSELB = 0
ANSELC = 0
ANSELD = 0
ANSELE = 0
ADCON1 = 15
tmp1 var byte
tmp2 var byte
p1 var byte
p2 var byte
p3 var byte
seconds var byte
pausetime var byte
i2cSDA VAR PORTD.1
i2cSCL VAR PORTD.0
pause 50
i2cwrite i2cSDA,i2cSCL, $d0, $3e, [64] ' switch off the gyroscope (save 6.5 mA)
pauseus 5
'I2CWRITE i2cSDA,i2cSCL, $a6, $2c, [%1000] 'accelerometer
pauseus 5
OSCCON = OSCCON | %11110000 ' set internal clock to 16 MHz incase of switchover
On Interrupt Goto myint
PMD0 = %10111110 ' leave UART1 and Timer1 enabled
PMD1 = %10111111 ' leave MSSP1 (SPI) enables
PMD2 = %11111111 ' disable all these peripherals
IPR1.0 = 1
INTCON = %11000000 ' global int enable
OSCCON.7 = 0 ' CPU goes to IDLE when SLEEP command given
T1CON.3 = 1 ' secondary (external) oscillator enable bit
T1CON.7 = 1 ' timer 1 clock source is oscillator (external xtal)
T1CON.6 = 0 ' """"""""""""""""""""""""""""""""""""""""""""""""""
T1CON.5 = 0 ' prescale value set to 1:1
T1CON.4 = 0 ' """""""""""""""""""""""""
T1CON.2 = 1 ' do not synchronise external clock input with system clock
T1CON.1 = 0 ' 2x 8 bit timer value output
TMR1H = $fc ' Clear timer1 count
TMR1L = 0 ' Clear timer1 count
PIR1.0 = 0 ' Clear over-flow flag before enable
PIE1.0 = 1 ' timer 1 enable interrupt
T1CON.0 = 1 ' enable timer 1
lp:
' do something in this loop
sleep 10 ' and then go to sleep
goto lp
stop
Disable
myint:
hserout[$d,$a,"Interrupt!"]
high blue_led
pause 1
low blue_led
TMR1H = $fc
TMR1L = $0
PIR1.0 = 0 ' reset interrupt request flag
Resume
Enable
Bookmarks