diff --git a/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp b/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp index e0d8e5022..df8f19a72 100644 --- a/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp +++ b/radio/src/targets/common/arm/stm32/rotary_encoder_driver.cpp @@ -104,18 +104,14 @@ void rotaryEncoderCheck() #else uint8_t newPosition = ROTARY_ENCODER_POSITION(); if (newPosition != rotencPosition && !(readKeys() & (1 << KEY_ENTER))) { +#if defined(ROTARY_ENCODER_INVERT) + if (!((rotencPosition & 0x01) ^ ((newPosition & 0x02) >> 1))) { +#else if ((rotencPosition & 0x01) ^ ((newPosition & 0x02) >> 1)) { -#if defined(ROTARY_ENCODER_INVERT) - ++rotencValue; -#else - --rotencValue; #endif + --rotencValue; } else { -#if defined(ROTARY_ENCODER_INVERT) - --rotencValue; -#else ++rotencValue; -#endif } rotencPosition = newPosition; #endif