diff --git a/src/main/cli/cli.c b/src/main/cli/cli.c index cf53152b4b..4f8b412f7b 100644 --- a/src/main/cli/cli.c +++ b/src/main/cli/cli.c @@ -2178,8 +2178,8 @@ static void cliServo(const char *cmdName, char *cmdline) servo = servoParamsMutable(i); if ( - arguments[MIN] < PWM_PULSE_MIN || arguments[MIN] > PWM_PULSE_MAX || - arguments[MAX] < PWM_PULSE_MIN || arguments[MAX] > PWM_PULSE_MAX || + arguments[MIN] < PWM_SERVO_MIN || arguments[MIN] > PWM_SERVO_MAX || + arguments[MAX] < PWM_SERVO_MIN || arguments[MAX] > PWM_SERVO_MAX || arguments[MIDDLE] < arguments[MIN] || arguments[MIDDLE] > arguments[MAX] || arguments[MIN] > arguments[MAX] || arguments[RATE] < -100 || arguments[RATE] > 100 || diff --git a/src/main/flight/servos.c b/src/main/flight/servos.c index 71b26b4d8d..fd674d962b 100644 --- a/src/main/flight/servos.c +++ b/src/main/flight/servos.c @@ -211,7 +211,7 @@ int16_t determineServoMiddleOrForwardFromChannel(servoIndex_e servoIndex) const uint8_t channelToForwardFrom = servoParams(servoIndex)->forwardFromChannel; if (channelToForwardFrom != CHANNEL_FORWARDING_DISABLED && channelToForwardFrom < rxRuntimeState.channelCount) { - return rcData[channelToForwardFrom]; + return scaleRangef(constrainf(rcData[channelToForwardFrom], PWM_RANGE_MIN, PWM_RANGE_MAX), PWM_RANGE_MIN, PWM_RANGE_MAX, servoParams(servoIndex)->min, servoParams(servoIndex)->max); } return servoParams(servoIndex)->middle; diff --git a/src/main/flight/servos.h b/src/main/flight/servos.h index 365074b89d..1c4b6b3bd6 100644 --- a/src/main/flight/servos.h +++ b/src/main/flight/servos.h @@ -24,6 +24,13 @@ #include "drivers/io_types.h" #include "drivers/pwm_output.h" +#define PWM_SERVO_MIN 500 // minimum servo PWM pulse width which we can set from cli +#define PWM_SERVO_MAX 2500 // maximum servo PWM pulse width which we can set from cli + +#define DEFAULT_SERVO_MIN 1000 +#define DEFAULT_SERVO_MIDDLE 1500 +#define DEFAULT_SERVO_MAX 2000 + // These must be consecutive, see 'reversedSources' enum { INPUT_STABILIZED_ROLL = 0, diff --git a/src/main/rx/rx.h b/src/main/rx/rx.h index 76bfdaf97f..878131ee4c 100644 --- a/src/main/rx/rx.h +++ b/src/main/rx/rx.h @@ -41,9 +41,6 @@ #define CHANNEL_VALUE_TO_RXFAIL_STEP(channelValue) ((constrain(channelValue, PWM_PULSE_MIN, PWM_PULSE_MAX) - PWM_PULSE_MIN) / 25) #define MAX_RXFAIL_RANGE_STEP ((PWM_PULSE_MAX - PWM_PULSE_MIN) / 25) -#define DEFAULT_SERVO_MIN 1000 -#define DEFAULT_SERVO_MIDDLE 1500 -#define DEFAULT_SERVO_MAX 2000 typedef enum { RX_FRAME_PENDING = 0,