From f881d7e11cb639d70bc9f681a7149435edcf036a Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Fri, 14 Oct 2022 17:31:03 +0200 Subject: [PATCH] PPM trainer output: update delay on each cycle --- radio/src/targets/common/arm/stm32/stm32_pulse_driver.cpp | 5 +++++ radio/src/targets/common/arm/stm32/stm32_pulse_driver.h | 2 ++ radio/src/targets/common/arm/stm32/trainer_driver.cpp | 1 + 3 files changed, 8 insertions(+) diff --git a/radio/src/targets/common/arm/stm32/stm32_pulse_driver.cpp b/radio/src/targets/common/arm/stm32/stm32_pulse_driver.cpp index 456c35536..6ed59fa2b 100644 --- a/radio/src/targets/common/arm/stm32/stm32_pulse_driver.cpp +++ b/radio/src/targets/common/arm/stm32/stm32_pulse_driver.cpp @@ -190,6 +190,11 @@ static void set_compare_reg(const stm32_pulse_timer_t* tim, uint32_t val) } } +void stm32_pulse_set_cmp_val(const stm32_pulse_timer_t* tim, uint32_t cmp_val) +{ + set_compare_reg(tim, cmp_val); +} + static void set_oc_mode(const stm32_pulse_timer_t* tim, uint32_t ocmode) { uint32_t channel = tim->TIM_Channel; diff --git a/radio/src/targets/common/arm/stm32/stm32_pulse_driver.h b/radio/src/targets/common/arm/stm32/stm32_pulse_driver.h index 04cf8ace6..00820b1a1 100644 --- a/radio/src/targets/common/arm/stm32/stm32_pulse_driver.h +++ b/radio/src/targets/common/arm/stm32/stm32_pulse_driver.h @@ -51,6 +51,8 @@ void stm32_pulse_config_output(const stm32_pulse_timer_t* tim, bool polarity, void stm32_pulse_set_polarity(const stm32_pulse_timer_t* tim, bool polarity); +void stm32_pulse_set_cmp_val(const stm32_pulse_timer_t* tim, uint32_t cmp_val); + // return true if it could be disabled without interrupting a pulse train, false otherwise bool stm32_pulse_if_not_running_disable(const stm32_pulse_timer_t* tim); diff --git a/radio/src/targets/common/arm/stm32/trainer_driver.cpp b/radio/src/targets/common/arm/stm32/trainer_driver.cpp index f975b1b5e..dd3d99ad0 100644 --- a/radio/src/targets/common/arm/stm32/trainer_driver.cpp +++ b/radio/src/targets/common/arm/stm32/trainer_driver.cpp @@ -183,6 +183,7 @@ static const stm32_pulse_timer_t trainerOutputTimer = { static void trainerSendNextFrame() { stm32_pulse_set_polarity(&trainerOutputTimer, GET_TRAINER_PPM_POLARITY()); + stm32_pulse_set_cmp_val(&trainerOutputTimer, GET_TRAINER_PPM_DELAY() * 2); // load the first period: next reload when CC compare event triggers trainerPulsesData.ppm.ptr = trainerPulsesData.ppm.pulses;