From ac9414758956f966ba1bbb4990ef0c1da66f17e0 Mon Sep 17 00:00:00 2001 From: DTF UHF Date: Fri, 14 Feb 2014 15:15:38 -0500 Subject: [PATCH] Have servos output midrc at startup instead of 1ms pulse (full deflection) --- src/drv_pwm.c | 2 +- src/drv_pwm.h | 1 + src/main.c | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/drv_pwm.c b/src/drv_pwm.c index e43a983227..46c258461e 100755 --- a/src/drv_pwm.c +++ b/src/drv_pwm.c @@ -376,7 +376,7 @@ bool pwmInit(drv_pwm_config_t *init) motors[numMotors++] = pwmOutConfig(port, mhz, hz / init->motorPwmRate, init->idlePulse); } else if (mask & TYPE_S) { - servos[numServos++] = pwmOutConfig(port, PWM_TIMER_MHZ, 1000000 / init->servoPwmRate, PULSE_1MS); + servos[numServos++] = pwmOutConfig(port, PWM_TIMER_MHZ, 1000000 / init->servoPwmRate, init->servoCenterPulse); } } diff --git a/src/drv_pwm.h b/src/drv_pwm.h index f79ba19cc3..8b597ca5b7 100755 --- a/src/drv_pwm.h +++ b/src/drv_pwm.h @@ -18,6 +18,7 @@ typedef struct drv_pwm_config_t { uint16_t servoPwmRate; uint16_t idlePulse; // PWM value to use when initializing the driver. set this to either PULSE_1MS (regular pwm), // some higher value (used by 3d mode), or 0, for brushed pwm drivers. + uint16_t servoCenterPulse; uint16_t failsafeThreshold; } drv_pwm_config_t; diff --git a/src/main.c b/src/main.c index 7d3a3e5713..ee6a1ab73f 100755 --- a/src/main.c +++ b/src/main.c @@ -73,6 +73,7 @@ int main(void) pwm_params.idlePulse = mcfg.neutral3d; if (pwm_params.motorPwmRate > 500) pwm_params.idlePulse = 0; // brushed motors + pwm_params.servoCenterPulse = mcfg.midrc; pwm_params.failsafeThreshold = cfg.failsafe_detect_threshold; switch (mcfg.power_adc_channel) { case 1: