Quadrature Encoder Example Problem
This may be due to the quadrature encoder I am using but here it goes...· 
When using the below code from the help file (I removed the display code) when I WATCH the encValue using
debug, or even putting encValue out to a port with leds, the count always increments and decrements by 4 decimals. When I turn the encoder VERY slowly, between clicks(my encoder has 32 lock positions) it will show the first two bits momentarily, but they dissappear...
So I turn my encoder one click, and it counts 4, and if I turn it again, 8.· Then I turn it back, and it counts back to 4, turn it once more back,·then counts·0.
Is this code somehow counting too many pulses from my quadrature encoder?
The encoder I am using is a·HRPG-AD32-#13C http://www.avagotech.com/assets/downloadDocument.do?id=610
Any code suggestions on how to deal with this?

When using the below code from the help file (I removed the display code) when I WATCH the encValue using
debug, or even putting encValue out to a port with leds, the count always increments and decrements by 4 decimals. When I turn the encoder VERY slowly, between clicks(my encoder has 32 lock positions) it will show the first two bits momentarily, but they dissappear...
So I turn my encoder one click, and it counts 4, and if I turn it again, 8.· Then I turn it back, and it counts back to 4, turn it once more back,·then counts·0.
Is this code somehow counting too many pulses from my quadrature encoder?
The encoder I am using is a·HRPG-AD32-#13C http://www.avagotech.com/assets/downloadDocument.do?id=610
Any code suggestions on how to deal with this?
' ------------------------------------------------------------------------- ' Device Settings ' ------------------------------------------------------------------------- DEVICE SX28, OSC4MHZ, TURBO, STACKX, OPTIONX FREQ 4_000_000 ID "ENCODER" ' ------------------------------------------------------------------------- ' IO Pins ' ------------------------------------------------------------------------- EncPort VAR RA ' encoder port TRIS_Enc VAR TRIS_A ' ------------------------------------------------------------------------- ' Constants ' ------------------------------------------------------------------------- MaxVal CON 100 ' ------------------------------------------------------------------------- ' Variables ' ------------------------------------------------------------------------- encCheck VAR Byte encOld VAR Byte ' previous encoder bits encNew VAR Byte ' new encoder bits encValue VAR Byte ' encoder value tmpB3 VAR Byte ' ------------------------------------------------------------------------- INTERRUPT ' ------------------------------------------------------------------------- ' Runs every 64 uS @ 4 MHz (no prescaler) ISR_Start: encNew = EncPort & %00000011 ' get econder bits tmpB3 = encOld XOR encNew ' test for change IF tmpB3 > 0 THEN ' change? encOld = encOld << 1 ' adjust old bits encOld = encOld XOR encNew ' test direction IF encOld.1 = 1 THEN IF encValue < MaxVal THEN ' if max, no change INC encValue ' increase value ENDIF ELSE IF encValue > 0 THEN ' if 0, no change DEC encValue ' decrease value ENDIF ENDIF encOld = encNew ' save last input ENDIF ISR_Exit: RETURNINT ' ========================================================================= PROGRAM Start ' ========================================================================= ' ------------------------------------------------------------------------- ' Subroutine Declarations ' ------------------------------------------------------------------------- ' ------------------------------------------------------------------------- ' Program Code ' ------------------------------------------------------------------------- Start: encNew = EncPort & %00000011 ' read encoder pos encOld = encNew ' copy encValue = 0 ' clear value OPTION = $88 ' interrupt, no prescaler Main: GoTo Main ' ------------------------------------------------------------------------- ' Subroutine Code ' -------------------------------------------------------------------------
Comments
Bean.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Cheap used 4-digit LED display with driver IC·www.hc4led.com
Low power SD Data Logger www.sddatalogger.com
SX-Video Display Modules www.sxvm.com
Stuff I'm selling on ebay http://search.ebay.com/_W0QQsassZhittconsultingQQhtZ-1
"USA Today has come out with a new survey - apparently, three out of every four people make up 75% of the population." - David Letterman