diff --git a/radio/src/pulses/pulses.cpp b/radio/src/pulses/pulses.cpp index e5ce7c90f..4cd50f240 100755 --- a/radio/src/pulses/pulses.cpp +++ b/radio/src/pulses/pulses.cpp @@ -689,7 +689,7 @@ void extmoduleSendNextFrame() extmoduleSendNextFrameSoftSerial100kbit( extmodulePulsesData.dsm2.pulses, extmodulePulsesData.dsm2.ptr - extmodulePulsesData.dsm2.pulses, - !GET_SBUS_POLARITY(EXTERNAL_MODULE)); + GET_SBUS_POLARITY(EXTERNAL_MODULE)); break; case PROTOCOL_CHANNELS_DSM2_LP45: diff --git a/radio/src/pulses/pxx.h b/radio/src/pulses/pxx.h index c29c29160..f026c7b1c 100644 --- a/radio/src/pulses/pxx.h +++ b/radio/src/pulses/pxx.h @@ -107,19 +107,16 @@ class SerialPxxBitTransport: public DataBuffer { class PwmPxxBitTransport: public PulsesBuffer { protected: - uint16_t rest; void initFrame(uint32_t period) { initBuffer(); - rest = period * 2000; // 0.5uS (2Mhz) } void addPart(uint8_t value) { pulse_duration_t duration = value ? 47 : 31; *ptr++ = duration; - rest -= duration + 1; } void addTail() diff --git a/radio/src/targets/common/arm/stm32/extmodule_driver.cpp b/radio/src/targets/common/arm/stm32/extmodule_driver.cpp index d73bbcd14..8deddf726 100644 --- a/radio/src/targets/common/arm/stm32/extmodule_driver.cpp +++ b/radio/src/targets/common/arm/stm32/extmodule_driver.cpp @@ -65,6 +65,7 @@ void extmodulePpmStart(uint16_t ppm_delay, bool polarity) ocInit.OCMode = LL_TIM_OCMODE_PWM1; ocInit.OCState = LL_TIM_OCSTATE_ENABLE; + ocInit.OCNState = LL_TIM_OCSTATE_ENABLE; if (polarity) { ocInit.OCPolarity = LL_TIM_OCPOLARITY_LOW; @@ -105,7 +106,7 @@ void extmoduleSerialStart() ocInit.OCMode = LL_TIM_OCMODE_TOGGLE; ocInit.OCState = LL_TIM_OCSTATE_ENABLE; - ocInit.OCPolarity = LL_TIM_OCPOLARITY_LOW; + ocInit.OCPolarity = LL_TIM_OCPOLARITY_HIGH; ocInit.CompareValue = 0; stm32_pulse_config_output(&extmoduleTimer, &ocInit); @@ -168,9 +169,9 @@ void extmoduleSendNextFrameSoftSerial100kbit(const void* pulses, uint16_t length uint32_t ll_polarity; if (polarity) { - ll_polarity = LL_TIM_OCPOLARITY_LOW; - } else { ll_polarity = LL_TIM_OCPOLARITY_HIGH; + } else { + ll_polarity = LL_TIM_OCPOLARITY_LOW; } LL_TIM_OC_SetPolarity(EXTMODULE_TIMER, EXTMODULE_TIMER_Channel, ll_polarity);