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: