From c406e0a3a220c794a1f35a7d941b38c1ab8d6110 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Tue, 10 Dec 2024 19:34:47 +0100 Subject: [PATCH] RPMCapture: refactor to clarify when an interrupt happened --- src/drivers/rpm_capture/RPMCapture.cpp | 8 ++++---- src/drivers/rpm_capture/RPMCapture.hpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/drivers/rpm_capture/RPMCapture.cpp b/src/drivers/rpm_capture/RPMCapture.cpp index 81eaa72767..0da3f941df 100644 --- a/src/drivers/rpm_capture/RPMCapture.cpp +++ b/src/drivers/rpm_capture/RPMCapture.cpp @@ -107,11 +107,11 @@ void RPMCapture::Run() hrt_abstime now = hrt_absolute_time(); - if (!_value_processed.load()) { + if (_interrupt_happened.load()) { // There was an interrupt _period = _hrt_timestamp - _hrt_timestamp_prev; _hrt_timestamp_prev = _hrt_timestamp; - _value_processed.store(true); + _interrupt_happened.store(false); pwm_input_s pwm_input{}; pwm_input.timestamp = now; @@ -157,12 +157,12 @@ int RPMCapture::gpio_interrupt_callback(int irq, void *context, void *arg) { RPMCapture *instance = static_cast(arg); - if (!instance->_value_processed.load()) { + if (instance->_interrupt_happened.load()) { ++instance->_error_count; } instance->_hrt_timestamp = hrt_absolute_time(); - instance->_value_processed.store(false); + instance->_interrupt_happened.store(true); instance->ScheduleNow(); return PX4_OK; diff --git a/src/drivers/rpm_capture/RPMCapture.hpp b/src/drivers/rpm_capture/RPMCapture.hpp index bbc1b2f66b..0744c3951f 100644 --- a/src/drivers/rpm_capture/RPMCapture.hpp +++ b/src/drivers/rpm_capture/RPMCapture.hpp @@ -85,7 +85,7 @@ private: hrt_abstime _hrt_timestamp_prev{0}; uint32_t _period{UINT32_MAX}; uint32_t _error_count{0}; - px4::atomic _value_processed{true}; + px4::atomic _interrupt_happened{false}; hrt_abstime _timestamp_last_update{0}; ///< to caluclate dt AlphaFilter _rpm_filter;