Quote:
|
Originally Posted by supertw
what's the point off adding 2000 to the following functions:
pwm01 = pwm03 = Limit_Mix(2000 + PWM_in1 + PWM_in2 - 127); /* LEFT WHEELS */
pwm02 = pwm04 = Limit_Mix(2000 + PWM_in2 - PWM_in1 + 127); /* RIGHT WHEELS */
the coding seems all fuzzy to me, i dont' get it
|
The compiler we use has the irritating feature of choosing eight-bit arithmetic when adding eight-bit quantities. That often results in overflow and unexpected results. Adding a constant
2000 to the expression forces the compiler to do things using 16-bit arithmetic, and everything then works as it should.
The Limit_Mix() function subtracts 2000 from its result, neatly compensating for the extra 2000 in its input.