there's not much in your circuit than should be drawing power when 'off'.
1. change the 1k on pin4 ra3 to 47k
2. use TRIO=$FF when you want to turn off stuff completely
3. have you considered running the chip slower?
-- you can use 125khz and use "9600 baud serial" out to give you "real" 300 baud
--my usb>serial won't work on 75baud otherwise I'd use 32khz for debugging
Code:'low speed osccon 31khz 'bit 6-4 IRCF<2:0>: Internal Oscillator Frequency Select bits ' correction ' by shifting ' | ' v Min Pause times ' 111 =8MHz ' 110 =4MHz (default) 0 ' 101 =2MHz 1 2 ' 100 =1MHz 2 4 ' 011 =500kHz 3 8 ' 010 =250kHz 4 16 ' 001 =125kHz 5 32 ' 000 =31kHz (LFINTOSC) 7 128 OSCCON.6 = 0 OSCCON.5 = 0 OSCCON.4 = 1 speed_shift con 5 ' use 0-7 : oscillator / delay correction by shifting ' PAUSE is affect by this, see the above minimum pause times ' ' FOR LOW POWER DISABLE AS MANY FEATURES AS POSSIBLE. ' ** FOR 12F675 un-COMMENT CMCON=7, ANSEL=0, ADCON0=0 ' ** FOR 12f683 un-COMMENT CMCON0=7, ANSEL=0, ADCON0=0 ' ** FOR 12F629 COMMENT ALL ' CMCON = $07 '12F675 CMCON — COMPARATOR CONTROL REGISTER ALL DIGITAL CMCON0 = $07 '12F683 CMCON0 — COMPARATOR CONTROL REGISTER ALL DIGITAL ' TRISIO = %11111011 'SET TO ALL OUTPUTS 1=INPUT ' ADCON1 = %01100000 ' Set a2d convert at clk/6 [slowest] ' ADCON1 = %00000000 ' Set a2d convert at clk/2 [fastest] ANSEL = %00000000 ' AN0/RA0 as analog input 1=ANALOG ' ADCON0 = %00000001 ' .7=10bits left justify result!! / .0 1=a2d ON ADCON0 = %00000000 ' .7=10bits left justify result!! / .0 1=a2d ON ' WPUA = %00000000 ' TURN ON WEAK PULLUP 1=ON VALID=.5.4.2.1.0 'constants ALL_INPUTS CON $FF ' Set to all inputs to save power LAMP_OFF CON $00 LAMP_ALL con $36 'GPIO.1.2.4.5 'IO assignments SERIAL_PIN var GPIO.2
Main code snippets:
Code:X= 250 ' DELAY TIME in milliseconds led = lamp gosub Lamp_ON ' turn OFF LED time = 750mS X= 750 : gosub OFF_Lamp
those called subroutines
Code:' Speed affected by the CPU clock speed Lamp_ON: TRISIO = ALL_INPUTS - led GPIO = led Pause X >> speed_shift ' Delay for on time in milliseconds TRISIO = ALL_INPUTS ' Set to all inputs to save power Return OFF_Lamp: TRISIO = ALL_INPUTS Pause X >> speed_shift ' Delay for on time in milliseconds Return ' *** SLEEP & NAP Speed *NOT* affected by the CPU clock speed ' NAP uses slow clock mS 0=18,1=36,2=72,3=144,4=288,5=576,6=1.52s,7=2.304s ON_Lamp_Short: TRISIO = ALL_INPUTS - LAMP GPIO = LAMP NAP x TRISIO = ALL_INPUTS ' Set to all inputs to save power Return OFF_Lamp_Short: TRISIO = ALL_INPUTS ' Set to all inputs to save power NAP x Return






Bookmarks