mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 11:38:56 +08:00
fix(lps22hb): correct timestamp_sample to integration midpoint
The LPS22HB one-shot measurement is integrated over a ~40ms window (at 25Hz-equivalent internal averaging). The read time corresponds to the end of the integration window. Correct timestamp_sample to the midpoint by subtracting CONVERSION_INTERVAL / 2.
This commit is contained in:
@@ -139,8 +139,12 @@ int LPS22HB::collect()
|
|||||||
uint8_t TEMP_OUT_H;
|
uint8_t TEMP_OUT_H;
|
||||||
} report{};
|
} report{};
|
||||||
|
|
||||||
/* this should be fairly close to the end of the measurement, so the best approximation of the time */
|
/* Correct for measurement integration delay: the one-shot conversion
|
||||||
const hrt_abstime timestamp_sample = hrt_absolute_time();
|
* was started CONVERSION_INTERVAL ago, so the effective sample
|
||||||
|
* midpoint is half the conversion interval before now. */
|
||||||
|
const hrt_abstime now = hrt_absolute_time();
|
||||||
|
const hrt_abstime half_meas = LPS22HB_CONVERSION_INTERVAL / 2;
|
||||||
|
const hrt_abstime timestamp_sample = (now > half_meas) ? (now - half_meas) : now;
|
||||||
int ret = _interface->read(STATUS, (uint8_t *)&report, sizeof(report));
|
int ret = _interface->read(STATUS, (uint8_t *)&report, sizeof(report));
|
||||||
|
|
||||||
if (ret != OK) {
|
if (ret != OK) {
|
||||||
|
|||||||
Reference in New Issue
Block a user