From 17bcb43dd64a50c5527cf92639433a75ce2cf311 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 9 Mar 2020 21:15:45 -0400 Subject: [PATCH] Improve debounce resolution --- Firmware/MotorControl/endstop.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/MotorControl/endstop.cpp b/Firmware/MotorControl/endstop.cpp index d4be0f41..bdafa395 100644 --- a/Firmware/MotorControl/endstop.cpp +++ b/Firmware/MotorControl/endstop.cpp @@ -10,12 +10,12 @@ void Endstop::update() { GPIO_TypeDef* gpio_port = get_gpio_port_by_pin(config_.gpio_num); bool last_pin_state = pin_state_; pin_state_ = HAL_GPIO_ReadPin(gpio_port, gpio_pin); - uint32_t now = static_cast(axis_->loop_counter_ * current_meas_period); + uint32_t now = static_cast(axis_->loop_counter_ * current_meas_period * 1000); if (pin_state_ != last_pin_state) { debounce_timer_ = now; } if (config_.enabled) { - if ((now - debounce_timer_) >= (config_.debounce_ms * 0.001f)) { // Debounce timer expired, take the new pin state + if ((now - debounce_timer_) >= config_.debounce_ms) { // Debounce timer expired, take the new pin state endstop_state_ = config_.is_active_high ? pin_state_ : !pin_state_; // endstop_state is the logical state debounce_timer_ = config_.debounce_ms; // Ensure timer doesn't have overflow issues } else {