mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-22 01:11:42 +00:00
Accumulators wait for the next sample after reset
Analog accumulators now wait for the amount of time a full sample (including oversampling and averaging) lasts after AnalogInput::ResetAccumulator() is called, so they don't return old values after being reset. This delay should be microseconds long and will only happen when an accumulator is reset. A new test is is the C++ TiltPanCameraTest that tests this behavior with the Gyro class. Change-Id: I1b3ffdeec187959f95c5e637a6d428c9a4bc2cf4
This commit is contained in:
@@ -310,6 +310,14 @@ public class AnalogInput extends SensorBase implements PIDSource,
|
||||
status.order(ByteOrder.LITTLE_ENDIAN);
|
||||
AnalogJNI.resetAccumulator(m_port, status.asIntBuffer());
|
||||
HALUtil.checkStatus(status.asIntBuffer());
|
||||
|
||||
// Wait until the next sample, so the next call to getAccumulator*()
|
||||
// won't have old values.
|
||||
final double sampleTime = 1.0 / getGlobalSampleRate();
|
||||
final double overSamples = 1 << getOversampleBits();
|
||||
final double averageSamples = 1 << getAverageBits();
|
||||
Timer.delay(sampleTime * overSamples * averageSamples);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user