From ce4804d94caae00c4f0e6214408610ac2e273547 Mon Sep 17 00:00:00 2001 From: "bernet.andre@gmail.com" Date: Mon, 20 May 2013 08:07:25 +0000 Subject: [PATCH] [Taranis] PPM polarities --- src/protocols/ppm_arm.cpp | 8 ++++++++ src/targets/taranis/pulses_driver.cpp | 4 +++- src/targets/taranis/trainer_driver.cpp | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/protocols/ppm_arm.cpp b/src/protocols/ppm_arm.cpp index 0109373d6..22121f533 100644 --- a/src/protocols/ppm_arm.cpp +++ b/src/protocols/ppm_arm.cpp @@ -82,10 +82,18 @@ void setupPulsesPPM(unsigned int port) // Don't enable interru if (port == TRAINER_MODULE) { TIM3->CCR2 = rest - 1000 ; // Update time TIM3->CCR4 = (g_model.moduleData[port].ppmDelay*50+300)*2; + if(!g_model.moduleData[TRAINER_MODULE].ppmPulsePol) + TIM3->CCER |= TIM_CCER_CC4P; + else + TIM3->CCER &= ~TIM_CCER_CC4P; } else if (port == EXTERNAL_MODULE) { TIM8->CCR2 = rest - 1000; // Update time TIM8->CCR1 = (g_model.moduleData[port].ppmDelay*50+300)*2; + if(!g_model.moduleData[EXTERNAL_MODULE].ppmPulsePol) + TIM8->CCER |= TIM_CCER_CC1NP; + else + TIM8->CCER &= ~TIM_CCER_CC1NP; } else { TIM1->CCR2 = rest - 1000; // Update time diff --git a/src/targets/taranis/pulses_driver.cpp b/src/targets/taranis/pulses_driver.cpp index 729ff6402..f1b446556 100644 --- a/src/targets/taranis/pulses_driver.cpp +++ b/src/targets/taranis/pulses_driver.cpp @@ -443,7 +443,9 @@ static void init_pa7_ppm() #if defined(REV3) TIM8->CCER = TIM_CCER_CC1E ; #else - TIM8->CCER = TIM_CCER_CC1NE | TIM_CCER_CC1NP ; + TIM8->CCER = TIM_CCER_CC1NE; + if(!g_model.moduleData[EXTERNAL_MODULE].ppmPulsePol) + TIM8->CCER |= TIM_CCER_CC1NP; #endif TIM8->CCMR1 = TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC2PE ; // PWM mode 1 TIM8->CCR1 = (g_model.moduleData[EXTERNAL_MODULE].ppmDelay*50+300)*2; diff --git a/src/targets/taranis/trainer_driver.cpp b/src/targets/taranis/trainer_driver.cpp index 4753b1e0d..1b8787540 100644 --- a/src/targets/taranis/trainer_driver.cpp +++ b/src/targets/taranis/trainer_driver.cpp @@ -56,6 +56,8 @@ void init_trainer_ppm() TIM3->ARR = *TrainerPulsePtr++ ; TIM3->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1 ; // 0.5uS TIM3->CCER = TIM_CCER_CC4E ; + if(!g_model.moduleData[TRAINER_MODULE].ppmPulsePol) + TIM3->CCER |= TIM_CCER_CC4P; TIM3->CCMR2 = TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4PE ; // PWM mode 1 TIM3->CCR4 = (g_model.moduleData[TRAINER_MODULE].ppmDelay*50+300)*2; TIM3->BDTR = TIM_BDTR_MOE ;