Skip to content

Commit de0cfea

Browse files
author
Richard Unger
committed
improvements to STM32HWEncoder
1 parent a749c5e commit de0cfea

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/encoders/stm32hwencoder/STM32HWEncoder.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,14 @@ void STM32HWEncoder::update() {
3939
pulse_timestamp = _micros(); // micros() rollover is handled in velocity calculation
4040

4141
prev_overflow_count = overflow_count;
42-
if (prev_count > (ticks_per_overflow - overflow_margin) &&
43-
prev_count <= ticks_per_overflow && count < overflow_margin)
44-
++overflow_count;
45-
if (prev_count >= 0 && prev_count < overflow_margin &&
46-
count >= (ticks_per_overflow - overflow_margin))
42+
// if (prev_count > (ticks_per_overflow - overflow_margin) && count < overflow_margin)
43+
// ++overflow_count;
44+
// if (prev_count < overflow_margin && count >= (ticks_per_overflow - overflow_margin))
45+
// --overflow_count;
46+
if (prev_count < count && (count - prev_count > ticks_per_overflow / 2))
4747
--overflow_count;
48+
if (prev_count > count && (prev_count - count > ticks_per_overflow / 2))
49+
++overflow_count;
4850
}
4951

5052

@@ -110,8 +112,8 @@ void STM32HWEncoder::init() {
110112
ticks_per_overflow = cpr * rotations_per_overflow;
111113

112114
// GPIO configuration
113-
TIM_TypeDef *InstanceA = (TIM_TypeDef *)pinmap_peripheral(_pinA, PinMap_PWM);
114-
TIM_TypeDef *InstanceB = (TIM_TypeDef *)pinmap_peripheral(_pinB, PinMap_PWM);
115+
TIM_TypeDef *InstanceA = (TIM_TypeDef *)pinmap_peripheral(_pinA, PinMap_TIM);
116+
TIM_TypeDef *InstanceB = (TIM_TypeDef *)pinmap_peripheral(_pinB, PinMap_TIM);
115117
if (InstanceA != InstanceB) {
116118
initialized = false;
117119
return;
@@ -143,6 +145,7 @@ void STM32HWEncoder::init() {
143145

144146
encoder_handle.Instance = InstanceA; // e.g. TIM4;
145147
enableTimerClock(&encoder_handle);
148+
146149
if (HAL_TIM_Encoder_Init(&encoder_handle, &encoder_config) != HAL_OK) {
147150
initialized = false;
148151
return;

0 commit comments

Comments
 (0)