From ca9c3b18fffa187c4d40aa826a23a20634267431 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Mon, 19 Feb 2018 13:00:56 +0100 Subject: [PATCH] mc_attitude_control: avoid using a static variable for last_run and call hrt_absolute_time() only once. --- src/modules/mc_att_control/mc_att_control_main.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/modules/mc_att_control/mc_att_control_main.cpp b/src/modules/mc_att_control/mc_att_control_main.cpp index 3c2369a42e..8c95a3309d 100644 --- a/src/modules/mc_att_control/mc_att_control_main.cpp +++ b/src/modules/mc_att_control/mc_att_control_main.cpp @@ -1093,6 +1093,8 @@ MulticopterAttitudeControl::task_main() px4_pollfd_struct_t poll_fds = {}; poll_fds.events = POLLIN; + hrt_abstime last_run = task_start; + while (!_task_should_exit) { poll_fds.fd = _sensor_gyro_sub[_selected_gyro]; @@ -1117,9 +1119,9 @@ MulticopterAttitudeControl::task_main() /* run controller on gyro changes */ if (poll_fds.revents & POLLIN) { - static uint64_t last_run = 0; - float dt = (hrt_absolute_time() - last_run) / 1000000.0f; - last_run = hrt_absolute_time(); + const hrt_abstime now = hrt_absolute_time(); + float dt = (now - last_run) / 1e6f; + last_run = now; /* guard against too small (< 2ms) and too large (> 20ms) dt's */ if (dt < 0.002f) {