Interrupts can be very useful for many different purposes ... this isn't one of them.
In fact, interrupts will only slow things down and reduce the resolution of your readings.
A variation of what Henrik was describing might look like this ...
The resolution with WORD variables for the counts is 9uS (16F1783 running at 32Mhz internal OSC).
If the counters are BYTEs, the resolution is 3.5 uS, as measured in the simulator.
With interrupts, using a BASIC language ISR, that resolution will suffer greatly.
Code:
DEFINE OSC 32
ANSELA = 0
ANSELB = 0
Results VAR BYTE[9]
Res0 VAR Results[0]
Res1 VAR Results[1]
Res2 VAR Results[2]
Res3 VAR Results[3]
Res4 VAR Results[4]
Res5 VAR Results[5]
Res6 VAR Results[6]
Res7 VAR Results[7]
Res8 VAR Results[8]
IOCA VAR BYTE
IOCB VAR BYTE
Testing VAR PORTC.0
IOCBP = $FF
IOCBF = 0
CLEAR
WHILE !Testing : WEND
PAUSE 20
WHILE Testing
IOCA = IOCAF
IOCAF = 0
IOCB = IOCBF
IOCBF = 0
Res0 = Res0 + IOCA.0
Res1 = Res1 + IOCA.1
Res2 = Res2 + IOCA.2
Res3 = Res3 + IOCA.3
Res4 = Res4 + IOCA.4
Res5 = Res5 + IOCA.5
Res6 = Res6 + IOCB.0
Res7 = Res7 + IOCB.1
Res8 = Res8 + IOCB.2
WEND
Bookmarks