[sorry, send at first without tag. therefore resend] Hi all, I always try to solve my own problems (I learn from it) but this one has = me stumped. My project has a 16F74, reading the output of a rotary encoder (2 bit), = see below. 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 ; This is how I think the encoders work: ;The encoders output a 2-bit value: ; the A-bit signals rotation, ; the B-bit signals the direction of rotation. (actually A and B are = interchangable of course) ; encoder movement is detected by polling PORTB and debouncing. ; ; --------------------->cw ; channel A ___ ___ ___ [channel A leads channel B] ; ___| |___| |___| ; ; channel B ___ ___ ___ ; |___| |___| |___| ; ; ; ; CCW: channel A ___ ___ ___ [channel A trails = channel B] ; ___| |___| |___| ; ; channel B ___ ___ ___ ; _| |___| |___| ; ; A-bit B-bit Direction ; 0>1 0 CW ; 1 CCW ; 1>0 0 CCW ; 1 CW -- 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