Charles, Thanks for the suggestion, that's working better. How do I make TMR3 faster? It seems to check the interupt at about 76 hz, I'd like to be around 350 hz? Is there a way to do it without messing up TMR1 that I'm already using? I'm figuring 350 hz because the switch will open/close at about 44hz, but it only stays closed for about 45 degrees or 1/8 of the time. So 44hz=22.7ms, 1/8 of 22.7ms = 0.00284 s, .00284 s = 352 hz. I'm using a 20Mhz XTAL, here are some of my other settings:
Code:
asm
__CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC3_PLL4_1L & _USBDIV_2_1L
__CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H
__CONFIG _CONFIG2L ,_BOR_ON_2L & _BORV_2_2L
endasm
INCLUDE "DT_INTS-18.bas" ; Base Interrupt System
INCLUDE "ReEnterPBP-18.bas" ; Include if using PBP interrupts
INCLUDE "Elapsed_INT-18.bas" ; Elapsed Timer Routines
ASM
INT_LIST macro ; IntSource, Label, Type, ResetFlag?
INT_Handler TMR1_INT, _ClockCount, PBP, yes
INT_Handler RX_INT, _Check_Command, PBP, yes
INT_Handler TMR3_INT, _CheckWind, PBP, yes
endm
INT_CREATE ; Creates the interrupt processor
ENDASM
@ INT_ENABLE TMR1_INT
@ INT_ENABLE RX_INT
@ INT_ENABLE TMR3_INT
For reference here is how I count number of times the switch closes, my version of what you posted, seems to work good.
Code:
CheckWind:
If Wpin = %1 Then
WindThsState = %1
Else
WindThsState = %0
EndIF
If WindThsState <> WindLstState Then 'Spinning
WindCnt = WindCnt +1
ENDIF
WindLstState = WindThsState
@ INT_RETURN
Let me know where I should modify, Thanks again for the help.
Shane
Bookmarks