diff --git a/src/drivers/barometer/bmp388/bmp388.cpp b/src/drivers/barometer/bmp388/bmp388.cpp index 464d9b5829..4fa7722918 100644 --- a/src/drivers/barometer/bmp388/bmp388.cpp +++ b/src/drivers/barometer/bmp388/bmp388.cpp @@ -171,8 +171,12 @@ BMP388::collect() perf_begin(_sample_perf); - /* this should be fairly close to the end of the conversion, so the best approximation of the time */ - const hrt_abstime timestamp_sample = hrt_absolute_time(); + /* Correct for measurement integration delay: the pressure was + * integrated over the preceding measurement_time window, so the + * effective sample midpoint is half the measurement time before now. */ + const hrt_abstime now = hrt_absolute_time(); + const hrt_abstime half_meas = get_measurement_time() / 2; + const hrt_abstime timestamp_sample = (now > half_meas) ? (now - half_meas) : now; if (!get_sensor_data(sensor_comp, &data)) { perf_count(_comms_errors);