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