Hi Jan, I think your problem might be simple, the standard way to do this is sense ONLY the 0-1 transition of A, then checking B tells you the direction. You just ignore the 1-0 transition on A. I'm sure that will fix it for you. :o) -Roman > First I check by polling if there is a change in the 'A' bit. If so, I wait > some 10mS (debounce) and then look again. If there is still a change, I > check if it is 1>0 or 0>1. In each case, I then check the 'B' bit to > determine direction. For debugging I beep once (CW) or twice (CCW) the > buzzer. > When turning the encoder I get seemingly random results. Sometimes it beeps > 3 times, or 4 times, or 1 time, or not at all over half a revolution. Then > it starts again. I'm pretty sure it has to do with the debounce, but I can't > get it right. I must add that the beep adds another 10 or 30 mS delay > between pollings. > The encoders are spec'd at <5mS chatter. > > Has anyone experience with decoding rotary encoders? Any help or ideas would > be greatly appreciated. > > Jan Didden > SkinTech > > ; The encoders output a 2-bit value: > ; the A-bit signals rotation, > ; the B-bit signals the direction of rotation. > ; encoder movement is detected by polling and debouncing in the b-port. > ; > ; --------------------->cw > ; channel A ___ ___ ___ [channel A leads channel B] > ; ___| |___| |___| > ; > ; channel B ___ ___ ___ > ; |___| |___| |___| -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics