From b9b9b0eccb837112e4431f3b6c5b72206ab67434 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 23 Apr 2019 15:35:18 +0200 Subject: [PATCH] Pulses fixes --- radio/src/pulses/multi.cpp | 8 +++++--- radio/src/pulses/pulses.cpp | 8 ++++---- radio/src/targets/horus/board.h | 2 +- radio/src/targets/horus/extmodule_driver.cpp | 2 +- radio/src/targets/horus/pulses_driver.cpp | 6 +++--- radio/src/targets/sky9x/board.h | 2 +- radio/src/targets/sky9x/pulses_driver.cpp | 2 +- radio/src/targets/taranis/board.h | 4 ++-- radio/src/targets/taranis/extmodule_driver.cpp | 4 ++-- radio/src/targets/taranis/pulses_driver.cpp | 4 ++-- 10 files changed, 22 insertions(+), 20 deletions(-) diff --git a/radio/src/pulses/multi.cpp b/radio/src/pulses/multi.cpp index 4465a9c08..055a74f9c 100644 --- a/radio/src/pulses/multi.cpp +++ b/radio/src/pulses/multi.cpp @@ -102,12 +102,14 @@ void setupPulsesMultimodule() // Every 1000 cycles (=9s) send a config packet that configures the multimodule (inversion, telemetry type) counter++; - if (counter % 1000== 500) { + if (counter % 1000== 500) { sendSetupFrame(); - } else if (counter % 1000 == 0 && g_model.moduleData[EXTERNAL_MODULE].failsafeMode != FAILSAFE_NOT_SET && g_model.moduleData[EXTERNAL_MODULE].failsafeMode != FAILSAFE_RECEIVER) { + } + else if (counter % 1000 == 0 && g_model.moduleData[EXTERNAL_MODULE].failsafeMode != FAILSAFE_NOT_SET && g_model.moduleData[EXTERNAL_MODULE].failsafeMode != FAILSAFE_RECEIVER) { sendFrameProtocolHeader(EXTERNAL_MODULE, true); sendFailsafeChannels(EXTERNAL_MODULE); - } else { + } + else { // Normal Frame sendFrameProtocolHeader(EXTERNAL_MODULE, false); sendChannels(EXTERNAL_MODULE); diff --git a/radio/src/pulses/pulses.cpp b/radio/src/pulses/pulses.cpp index 5a3512346..8c9d745b4 100755 --- a/radio/src/pulses/pulses.cpp +++ b/radio/src/pulses/pulses.cpp @@ -171,7 +171,7 @@ void disablePulses(uint8_t module, uint8_t protocol) #endif #if defined(MULTIMODULE) - case PROTOCOL_CHANNELS_MULTIMODULE: + case PROTOCOL_CHANNELS_MULTIMODULE: #endif case PROTOCOL_CHANNELS_SBUS: disable_serial(module); @@ -204,7 +204,7 @@ void enablePulses(uint8_t module, uint8_t protocol) case PROTOCOL_CHANNELS_DSM2_LP45: case PROTOCOL_CHANNELS_DSM2_DSM2: case PROTOCOL_CHANNELS_DSM2_DSMX: - init_serial(module, DSM2_BAUDRATE, DSM2_PERIOD * 2000); + init_serial(module, DSM2_BAUDRATE, DSM2_PERIOD * 2000, false); break; #endif @@ -222,12 +222,12 @@ void enablePulses(uint8_t module, uint8_t protocol) #if defined(MULTIMODULE) case PROTOCOL_CHANNELS_MULTIMODULE: - init_serial(module, MULTIMODULE_BAUDRATE, MULTIMODULE_PERIOD * 2000); + init_serial(module, MULTIMODULE_BAUDRATE, MULTIMODULE_PERIOD * 2000, true); break; #endif case PROTOCOL_CHANNELS_SBUS: - init_serial(module, SBUS_BAUDRATE, SBUS_PERIOD_HALF_US); + init_serial(module, SBUS_BAUDRATE, SBUS_PERIOD_HALF_US, false); break; case PROTOCOL_CHANNELS_PPM: diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index 0382929eb..deb44d3de 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -225,7 +225,7 @@ void init_pxx1_pulses(uint8_t module); void disable_pxx1_pulses(uint8_t module); void init_pxx2(uint8_t module); void disable_pxx2(uint8_t module); -void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us); +void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us, bool inverted); void intmoduleSerialStart(uint32_t baudrate, uint8_t rxEnable); void disable_serial(uint8_t module); void intmoduleStop(); diff --git a/radio/src/targets/horus/extmodule_driver.cpp b/radio/src/targets/horus/extmodule_driver.cpp index 4fb25ab08..a65100484 100644 --- a/radio/src/targets/horus/extmodule_driver.cpp +++ b/radio/src/targets/horus/extmodule_driver.cpp @@ -137,7 +137,7 @@ void extmodulePxx2Start() } #if defined(DSM2) -void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us) +void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us, bool inverted) { EXTERNAL_MODULE_ON(); diff --git a/radio/src/targets/horus/pulses_driver.cpp b/radio/src/targets/horus/pulses_driver.cpp index 57fca8889..796bcf177 100644 --- a/radio/src/targets/horus/pulses_driver.cpp +++ b/radio/src/targets/horus/pulses_driver.cpp @@ -28,7 +28,7 @@ void extmoduleStop(); void extmodulePpmStart(); void extmodulePxxStart(); void extmodulePxx2Start(); -void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us); +void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us, bool inverted); void init_ppm(uint8_t module) @@ -78,10 +78,10 @@ void disable_pxx1_pulses(uint8_t module) } #if defined(DSM2) -void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us) +void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us, bool inverted) { if (module == EXTERNAL_MODULE) { - extmoduleSerialStart(baudrate, period_half_us); + extmoduleSerialStart(baudrate, period_half_us, inverted); } } diff --git a/radio/src/targets/sky9x/board.h b/radio/src/targets/sky9x/board.h index 8bf2563d1..ff64e7ac6 100644 --- a/radio/src/targets/sky9x/board.h +++ b/radio/src/targets/sky9x/board.h @@ -259,7 +259,7 @@ void init_ppm(uint32_t port); void disable_ppm(uint32_t port); void init_pxx1_pulses(uint32_t port); void disable_pxx1_pulses(uint32_t port); -void init_serial(uint32_t port, uint32_t baudrate, uint32_t period_half_us); +void init_serial(uint32_t port, uint32_t baudrate, uint32_t period_half_us, bool inverted); void disable_serial(uint32_t port); void init_module_timer( uint32_t module_index, uint32_t period, uint8_t state); void disable_module_timer( uint32_t module_index); diff --git a/radio/src/targets/sky9x/pulses_driver.cpp b/radio/src/targets/sky9x/pulses_driver.cpp index 4058bedd4..603016075 100644 --- a/radio/src/targets/sky9x/pulses_driver.cpp +++ b/radio/src/targets/sky9x/pulses_driver.cpp @@ -236,7 +236,7 @@ void disable_pxx1_pulses(uint32_t port) } } -void init_serial(uint32_t port, uint32_t baudrate, uint32_t period_half_us) +void init_serial(uint32_t port, uint32_t baudrate, uint32_t period_half_us, bool inverted) { if (port == EXTERNAL_MODULE) { if (baudrate == 125000) { diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 3011d7cc7..d8a98008b 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -189,7 +189,7 @@ void init_pxx1_pulses(uint8_t module); void init_pxx1_serial(uint8_t module); void disable_pxx1_pulses(uint8_t module); void disable_pxx1_serial(uint8_t module); -void init_serial(uint8_t module, uint32_t baudrate, uint32_t period); +void init_serial(uint8_t module, uint32_t baudrate, uint32_t period, bool inverted); void disable_serial(uint8_t module); void intmoduleStop(); void intmodulePxxStart(); @@ -205,7 +205,7 @@ void extmodulePpmStart(); void extmodulePxxPulsesStart(); void extmodulePxxSerialStart(); void extmodulePxx2Start(); -void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us); +void extmoduleSerialStart(uint32_t baudrate, uint32_t period_half_us, bool inverted); void extmoduleInvertedSerialStart(uint32_t baudrate); void extmoduleSendBuffer(const uint8_t * data, uint8_t size); void extmoduleSendNextFrame(); diff --git a/radio/src/targets/taranis/extmodule_driver.cpp b/radio/src/targets/taranis/extmodule_driver.cpp index 16ff15c99..10b3ecfad 100644 --- a/radio/src/targets/taranis/extmodule_driver.cpp +++ b/radio/src/targets/taranis/extmodule_driver.cpp @@ -84,7 +84,7 @@ void extmodulePpmStart() NVIC_SetPriority(EXTMODULE_TIMER_CC_IRQn, 7); } -void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us) +void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us, bool inverted) { EXTERNAL_MODULE_ON(); @@ -101,7 +101,7 @@ void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us) EXTMODULE_TIMER->CR1 &= ~TIM_CR1_CEN; EXTMODULE_TIMER->PSC = EXTMODULE_TIMER_FREQ / 2000000 - 1; // 0.5uS from 30MHz EXTMODULE_TIMER->ARR = period_half_us; - EXTMODULE_TIMER->CCER = EXTMODULE_TIMER_OUTPUT_ENABLE; + EXTMODULE_TIMER->CCER = EXTMODULE_TIMER_OUTPUT_ENABLE | (inverted ? 0 : EXTMODULE_TIMER_OUTPUT_POLARITY); EXTMODULE_TIMER->BDTR = TIM_BDTR_MOE; // Enable outputs EXTMODULE_TIMER->CCR1 = 0; EXTMODULE_TIMER->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_0; // Force O/P high diff --git a/radio/src/targets/taranis/pulses_driver.cpp b/radio/src/targets/taranis/pulses_driver.cpp index fd5853856..ed8dd01a9 100644 --- a/radio/src/targets/taranis/pulses_driver.cpp +++ b/radio/src/targets/taranis/pulses_driver.cpp @@ -73,10 +73,10 @@ void disable_pxx2(uint8_t module) } #if defined(DSM2) -void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us) +void init_serial(uint8_t module, uint32_t baudrate, uint32_t period_half_us, bool inverted) { if (module == EXTERNAL_MODULE) { - extmoduleSerialStart(baudrate, period_half_us); + extmoduleSerialStart(baudrate, period_half_us, inverted); } }