Still not clear on how to end the mismatch in porta. Tried the following code, but it did not work on the breadboard. I'm looking for the the led to go off and stay off for 2 seconds, and then the timing to resume. This is just a demo tryout.
All of this is just testing to try to understand how instant interrupts work. Of course I know it's possible to just poll a porta pin in the main loop ... I do it that way with my non-interrupt software.
Code:
'device is PIC 16F684
'set registers
OPTION_REG.7 = 0 'enable porta pullups
CMCON0 = 7 'comparators off
ANSEL = 0 'porta pins all digital
TRISA = %111111 'set porta pins as input
TRISC = %001101 'set portc pins 0,2,3 as input, all others output
OSCCON = %1110000 'set internal osc. at 8 mhz, wait for stable freq.
OSCTUNE = 0 'internal osc. running at factory calibration
DEFINE OSC 8 '8 Mhz oscillator
while OSCCON.2 = 0 'wait for osc.to be stable
wend
'declare variables
led var portc.3 'led output on portc.3
DTtime var word
sum var word
dummy var byte
start:
low led 'flash red LED for 0.5 sec
pause 500
input led
pause 2000 'pause 2 seconds
INCLUDE "DT_INTS-14 for F684.bas" 'Base interrupt with wsave selected for 16F684
INCLUDE "ReEnterPBP.bas" 'Using PBP interrupts
INCLUDE "Elapsed_INT_RI.bas" 'Elasped timer counting seconds and tenths seconds
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler TMR1_INT, _ClockCount, PBP, yes
INT_Handler RAC_INT, _RDT, PBP, yes
endm
INT_CREATE ; Creates the interrupt processor
INT_ENABLE TMR1_INT ; Enable Timer 1 Interrupts
INT_ENABLE RAC_INT ; Enable PortA Change Interrupt
ENDASM
dummy = porta ' initialize dummy variable
DTtime = 1800 ' 180.0 second test
Gosub ResetTime ' Reset Time to 0d-00:00:00.00
Gosub StartTimer ' Start the Elapsed Timer
Main:
low Led 'turn on led
sum = 10*Seconds + Tenths
if sum => DTtime then
high led 'turn off led
goto halt
endif
GOTO Main
'-------Interrupt Handler for RDT------------
RDT:
high led 'turn led off
dummy = porta 'needed to end mismatch in porta
pause 2000 'pause 2 seconds
@ INT_RETURN
'---------------------------------------------
halt: end
431 words
Bookmarks