I have not tested this since I don't have a 12F675, but something like this should work. You might need to tweak the internal CVref settings.
Hook your sensor output to GPIO.1 Vin-. When your sensor outputs 1V (or anything > CVref) it should wake-up from sleep.
If you don't have PBP3 just get rid of the config line, and use what you have.
Code:#CONFIG __config _INTRC_OSC_NOCLKOUT & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _CP_OFF #ENDCONFIG DEFINE OSCCAL_1K 1 ' load internal osc calibration value LED VAR GPIO.2 ' LED output CmpFlag VAR PIR1.3 ' alias comparator interrupt flag bit CoutBit VAR CMCON.6 ' CMCON.6 is set while voltage on Vin- > CVref ANSEL = 0 ' disable A/D GPIO = 0 ' LED off on POR TRISIO = %00000010 ' GPIO.1 = input for Vin- comparator, rest outputs VRCON = %10100111 ' internal CVref enabled, low range. ' CVref = (VR3:VR0 / 24) * VDD. ' with (VR3:VR0) = 7 we have (7/24) * 3.3V ' so internal CVref = 0.9625V ' a voltage > 0.962V on Vin- (GPIO.1) will set COUT, ' set the comparator interrupt flag, and wake us up. CMCON = %00010100 ' Comparator w/o Output and with Internal Reference PIR1 = 0 ' clear flags before enabling comparator int PIE1 = %00001000 ' comparator interrupt enabled. INTCON = %01000000 ' enable peripheral interrupts for comparator ' global interrupts disabled, so there's no jump to ' an interrupt vector. We're just waking-up from sleep. TEST: WHILE CoutBit ' wait for COUT to clear. This clears when the voltage on WEND ' Vin- falls below the internal CVref CmpFlag = 0 ' clear comparator interrupt flag bit before entering sleep @ SLEEP ' should sleep until comparator trips HIGH LED PAUSE 500 LOW LED GOTO TEST end




Bookmarks