
25-01-2010, 03:21
|
|
National Instruments
AKA: Joe Hershberger
 FRC #2468 (Appreciate)
Team Role: Mentor
|
|
Join Date: May 2008
Rookie Year: 1997
Location: Austin, TX
Posts: 1,006
|
|
|
Re: Java PWM getPosition() integer division bug?
Quote:
Originally Posted by FRC4ME
After much troubleshooting trying to figure out why Servo.get() was returning 0.0 for any servo position other than 1.0, I noticed the following code in edu.wpi.first.wpilibj.PWM:
Code:
public double getPosition() {
int value = getRaw();
if (value < getMinNegativePwm()) {
return 0.0;
} else if (value > getMaxPositivePwm()) {
return 1.0;
} else {
return (value - getMinNegativePwm()) / getFullRangeScaleFactor();
}
}
Notice the final return statement. value, getMinNegativePwm(), and getFullRangeScaleFactor() are all of type int. Would this not cause the integer division to truncate to 0 for any result less than 1? I checked the C++ version of the same function, and sure enough, the numerator and denominator of the fraction are cast to float before the division.
|
Please post a bug report at: http://firstforge.wpi.edu/sf/tracker...ilib_java_bugs
Thanks,
-Joe
|