hi daniel,
thanks for the reply!
I have a little test rig set up with the motor/pulley mounted at one end and a pulley at the other. They are connected by a timing belt so there is positive tracking (no slippage). The encoder is built on the motor. I have hard stops on the base of this rig so that when I run the belt back and forth by hand I can stop at known absolute positions.
The errors I am seeing are not slight hand jitter - I know what you mean there - rather they are much larger - so starting at one hard stop as zero, running the belt back and forth by hand and then returning to the zero point, the encoder output will be off by 20 or 30 steps, and continue to drift if I keep moving the belt back and forth. (i.e. the drift continues to increase).
The only thing I can think is that the processor is missing pulses somehow - even though I am using interrupts. I can't see how to compensate for this in code since it doesn't seem predictable. Right now the only ugly solution I can think of is to zero out the motor through the use of a limit switch before every move but that would be a real drag (return to known zero point triggered by the limit switch).