From b8a60f250100ab693622a77cb310300ff14ba8a9 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 29 Jan 2016 15:03:51 +1100 Subject: [PATCH] pwm: change default_value for all boards from 1000 to 0 the value '1000' is not really magic, and it was resulting in sending a single 1ms pulse on all IO channels for a brief instant on startup. With some servos this led to the control surfaces being at extremes (and straining) on startup. It may also contribute to making ESC calibration harder on multi-rotors In the worst case it could cause a IC motor with reverse throttle to go full throttle on startup A logic analyser shows the problem very clearly. Changing the default_value fields to 0 from 1000 fixes the issue and no pulses are generated until an explicit value suitable for the airframe is provided via one of the many methods PWM output values can be generated Conflicts: src/drivers/boards/px4fmu-v4/px4fmu_pwm_servo.c src/lib/ecl --- src/drivers/boards/px4fmu-v1/px4fmu_pwm_servo.c | 8 ++++---- src/drivers/boards/px4fmu-v2/px4fmu_pwm_servo.c | 12 ++++++------ src/drivers/boards/px4fmu-v4/px4fmu_pwm_servo.c | 12 ++++++------ src/drivers/boards/px4io-v1/px4io_pwm_servo.c | 16 ++++++++-------- src/drivers/boards/px4io-v2/px4io_pwm_servo.c | 16 ++++++++-------- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/drivers/boards/px4fmu-v1/px4fmu_pwm_servo.c b/src/drivers/boards/px4fmu-v1/px4fmu_pwm_servo.c index 848e21d798..49c0fa42d2 100644 --- a/src/drivers/boards/px4fmu-v1/px4fmu_pwm_servo.c +++ b/src/drivers/boards/px4fmu-v1/px4fmu_pwm_servo.c @@ -64,24 +64,24 @@ __EXPORT const struct pwm_servo_channel pwm_channels[PWM_SERVO_MAX_CHANNELS] = { .gpio = GPIO_TIM2_CH1OUT, .timer_index = 0, .timer_channel = 1, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM2_CH2OUT, .timer_index = 0, .timer_channel = 2, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM2_CH3OUT, .timer_index = 0, .timer_channel = 3, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM2_CH4OUT, .timer_index = 0, .timer_channel = 4, - .default_value = 1000, + .default_value = 0, } }; diff --git a/src/drivers/boards/px4fmu-v2/px4fmu_pwm_servo.c b/src/drivers/boards/px4fmu-v2/px4fmu_pwm_servo.c index 600dfef412..2cae6b49e1 100644 --- a/src/drivers/boards/px4fmu-v2/px4fmu_pwm_servo.c +++ b/src/drivers/boards/px4fmu-v2/px4fmu_pwm_servo.c @@ -70,36 +70,36 @@ __EXPORT const struct pwm_servo_channel pwm_channels[PWM_SERVO_MAX_CHANNELS] = { .gpio = GPIO_TIM1_CH4OUT, .timer_index = 0, .timer_channel = 4, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM1_CH3OUT, .timer_index = 0, .timer_channel = 3, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM1_CH2OUT, .timer_index = 0, .timer_channel = 2, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM1_CH1OUT, .timer_index = 0, .timer_channel = 1, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM4_CH2OUT, .timer_index = 1, .timer_channel = 2, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM4_CH3OUT, .timer_index = 1, .timer_channel = 3, - .default_value = 1000, + .default_value = 0, } }; diff --git a/src/drivers/boards/px4fmu-v4/px4fmu_pwm_servo.c b/src/drivers/boards/px4fmu-v4/px4fmu_pwm_servo.c index ef2606d07d..2cae6b49e1 100644 --- a/src/drivers/boards/px4fmu-v4/px4fmu_pwm_servo.c +++ b/src/drivers/boards/px4fmu-v4/px4fmu_pwm_servo.c @@ -70,36 +70,36 @@ __EXPORT const struct pwm_servo_channel pwm_channels[PWM_SERVO_MAX_CHANNELS] = { .gpio = GPIO_TIM1_CH4OUT, .timer_index = 0, .timer_channel = 4, - .default_value = 900, + .default_value = 0, }, { .gpio = GPIO_TIM1_CH3OUT, .timer_index = 0, .timer_channel = 3, - .default_value = 900, + .default_value = 0, }, { .gpio = GPIO_TIM1_CH2OUT, .timer_index = 0, .timer_channel = 2, - .default_value = 900, + .default_value = 0, }, { .gpio = GPIO_TIM1_CH1OUT, .timer_index = 0, .timer_channel = 1, - .default_value = 900, + .default_value = 0, }, { .gpio = GPIO_TIM4_CH2OUT, .timer_index = 1, .timer_channel = 2, - .default_value = 900, + .default_value = 0, }, { .gpio = GPIO_TIM4_CH3OUT, .timer_index = 1, .timer_channel = 3, - .default_value = 900, + .default_value = 0, } }; diff --git a/src/drivers/boards/px4io-v1/px4io_pwm_servo.c b/src/drivers/boards/px4io-v1/px4io_pwm_servo.c index 6df470da6d..250b0ac26f 100644 --- a/src/drivers/boards/px4io-v1/px4io_pwm_servo.c +++ b/src/drivers/boards/px4io-v1/px4io_pwm_servo.c @@ -76,48 +76,48 @@ __EXPORT const struct pwm_servo_channel pwm_channels[PWM_SERVO_MAX_CHANNELS] = { .gpio = GPIO_TIM2_CH1OUT, .timer_index = 0, .timer_channel = 1, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM2_CH2OUT, .timer_index = 0, .timer_channel = 2, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM4_CH3OUT, .timer_index = 2, .timer_channel = 3, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM4_CH4OUT, .timer_index = 2, .timer_channel = 4, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM3_CH1OUT, .timer_index = 1, .timer_channel = 1, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM3_CH2OUT, .timer_index = 1, .timer_channel = 2, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM3_CH3OUT, .timer_index = 1, .timer_channel = 3, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM3_CH4OUT, .timer_index = 1, .timer_channel = 4, - .default_value = 1000, + .default_value = 0, } }; diff --git a/src/drivers/boards/px4io-v2/px4io_pwm_servo.c b/src/drivers/boards/px4io-v2/px4io_pwm_servo.c index 4f1b9487cf..2f212bd1c4 100644 --- a/src/drivers/boards/px4io-v2/px4io_pwm_servo.c +++ b/src/drivers/boards/px4io-v2/px4io_pwm_servo.c @@ -76,48 +76,48 @@ __EXPORT const struct pwm_servo_channel pwm_channels[PWM_SERVO_MAX_CHANNELS] = { .gpio = GPIO_TIM2_CH1OUT, .timer_index = 0, .timer_channel = 1, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM2_CH2OUT, .timer_index = 0, .timer_channel = 2, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM4_CH3OUT, .timer_index = 2, .timer_channel = 3, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM4_CH4OUT, .timer_index = 2, .timer_channel = 4, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM3_CH1OUT, .timer_index = 1, .timer_channel = 1, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM3_CH2OUT, .timer_index = 1, .timer_channel = 2, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM3_CH3OUT, .timer_index = 1, .timer_channel = 3, - .default_value = 1000, + .default_value = 0, }, { .gpio = GPIO_TIM3_CH4OUT, .timer_index = 1, .timer_channel = 4, - .default_value = 1000, + .default_value = 0, } };