From 0da692511988cb35e22a27f34e40d49cc7d5142f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20H=C3=BCttel?= Date: Sun, 30 Aug 2020 18:25:10 +0200 Subject: [PATCH] Issue #17: Add override function for deltas of rotary encoder --- .../include/reflow-controller/rotary-encoder.h | 2 ++ stm-firmware/rotary-encoder.c | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/stm-firmware/include/reflow-controller/rotary-encoder.h b/stm-firmware/include/reflow-controller/rotary-encoder.h index 706cb32..3b5721b 100644 --- a/stm-firmware/include/reflow-controller/rotary-encoder.h +++ b/stm-firmware/include/reflow-controller/rotary-encoder.h @@ -41,4 +41,6 @@ void rotary_encoder_stop(void); void rotary_encoder_zero(void); +void rotary_encoder_override_delta(int16_t delta); + #endif /* __ROTARY_ENCODER_H__ */ diff --git a/stm-firmware/rotary-encoder.c b/stm-firmware/rotary-encoder.c index d079b50..d4dc2b5 100644 --- a/stm-firmware/rotary-encoder.c +++ b/stm-firmware/rotary-encoder.c @@ -23,6 +23,8 @@ #include #include +static int16_t IN_SECTION(.ccm.bss) override_delta; + static inline void rotary_encoder_setup_pins(void) { rcc_manager_enable_clock(&RCC->AHB1ENR, BITMASK_TO_BITNO(ROTARY_ENCODER_RCC_MASK)); @@ -45,6 +47,8 @@ void rotary_encoder_setup(void) ROTARY_ENCODER_TIMER->CCER = TIM_CCER_CC1P | TIM_CCER_CC2P; ROTARY_ENCODER_TIMER->PSC = 0; ROTARY_ENCODER_TIMER->CR1 = TIM_CR1_CEN; + + override_delta = 0; } uint32_t rotary_encoder_get_abs_val(void) @@ -72,6 +76,9 @@ int32_t rotary_encoder_get_change_val(void) last_val = val; + diff += override_delta; + override_delta = 0; + return diff; } @@ -88,3 +95,8 @@ void rotary_encoder_zero(void) { ROTARY_ENCODER_TIMER->CNT = 0UL; } + +void rotary_encoder_override_delta(int16_t delta) +{ + override_delta = delta; +}