So you're getting ~360 counts for 180 degrees movement. Then the interrupt code must be doing 2x decoding instead of 4x - provided the encoder is actually 360cpr.
You loose the negative value because PBP doesn't handle the multiplication properly and you're of course better off copying the enc_counter variable to a second one for scaling and display purposes, sorry about all that.
Try this (untested):
Code:
Degrees VAR WORD
Sign VAR BIT
Degrees = enc_counter ' Degrees is now -180 to 180
Sign = Degrees.15 ' Save sign
Degrees = (ABS Degrees) * 5 ' Degrees is now 0 to 900
If Sign THEN Degrees = -Degrees ' Restore sign, value is now -900 to 900
/Henrik.
Bookmarks