fix(lps25h): correct timestamp_sample to integration midpoint

The LPS25H 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:
Jacob Dahl 2026-03-31 14:49:07 -08:00 committed by Jacob Dahl
parent ffa10ab362
commit 4b6cd37a23

View File

@ -151,8 +151,12 @@ int LPS25H::collect()
int16_t t;
} report{};
/* get measurements from the device : MSB enables register address auto-increment */
const hrt_abstime timestamp_sample = hrt_absolute_time();
/* Correct for measurement integration delay: the one-shot conversion
* 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 = LPS25H_CONVERSION_INTERVAL / 2;
const hrt_abstime timestamp_sample = (now > half_meas) ? (now - half_meas) : now;
int ret = _interface->read(ADDR_STATUS_REG | (1 << 7), (uint8_t *)&report, sizeof(report));
if (ret != OK) {