1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-18 05:45:31 +03:00

Fix Motor stop and 3D reverse

This commit is contained in:
borisbstyle 2016-01-18 13:13:30 +01:00
parent 91d12a0b7c
commit 2f6eeed6f5

View file

@ -83,7 +83,6 @@ static lowpass_t lowpassFilters[MAX_SUPPORTED_SERVOS];
#endif #endif
typedef enum { typedef enum {
THROTTLE_REVERSED,
THROTTLE_LOW_NEUTRAL, THROTTLE_LOW_NEUTRAL,
THROTTLE_HIGH_NEUTRAL, THROTTLE_HIGH_NEUTRAL,
THROTTLE_NORMAL THROTTLE_NORMAL
@ -808,7 +807,7 @@ void mixTable(void)
if (rcData[THROTTLE] <= (rxConfig->midrc - flight3DConfig->deadband3d_throttle)) { if (rcData[THROTTLE] <= (rxConfig->midrc - flight3DConfig->deadband3d_throttle)) {
throttleMax = rxConfig->midrc - flight3DConfig->deadband3d_high; throttleMax = rxConfig->midrc - flight3DConfig->deadband3d_high;
throttleMin = escAndServoConfig->minthrottle; throttleMin = escAndServoConfig->minthrottle;
throttleStatus3d = THROTTLE_REVERSED; throttleStatus3d = THROTTLE_NORMAL;
} else if (rcData[THROTTLE] >= (rxConfig->midrc + flight3DConfig->deadband3d_throttle)) { } else if (rcData[THROTTLE] >= (rxConfig->midrc + flight3DConfig->deadband3d_throttle)) {
throttleMin = rxConfig->midrc + flight3DConfig->deadband3d_high; throttleMin = rxConfig->midrc + flight3DConfig->deadband3d_high;
throttleMax = escAndServoConfig->maxthrottle; throttleMax = escAndServoConfig->maxthrottle;
@ -840,21 +839,17 @@ void mixTable(void)
// roll/pitch/yaw. This could move throttle down, but also up for those low throttle flips. // roll/pitch/yaw. This could move throttle down, but also up for those low throttle flips.
for (i = 0; i < motorCount; i++) { for (i = 0; i < motorCount; i++) {
motor[i] = rollPitchYawMix[i] + constrainf(rcCommand[THROTTLE] * currentMixer[i].throttle, throttleMin, throttleMax); motor[i] = rollPitchYawMix[i] + constrainf(rcCommand[THROTTLE] * currentMixer[i].throttle, throttleMin, throttleMax);
}
// Correct motor output for 3D based on the current throttle state // Correct motor output for 3D based on the current throttle state
if (feature(FEATURE_3D)) { if (feature(FEATURE_3D)) {
switch(throttleStatus3d) { switch(throttleStatus3d) {
case(THROTTLE_REVERSED):
motor[i] = rxConfig->midrc - motor[i];
break;
case(THROTTLE_LOW_NEUTRAL): case(THROTTLE_LOW_NEUTRAL):
motor[i] = rxConfig->midrc - flight3DConfig->deadband3d_throttle; motor[i] = rxConfig->midrc - flight3DConfig->deadband3d_throttle;
break; break;
case(THROTTLE_HIGH_NEUTRAL): case(THROTTLE_HIGH_NEUTRAL):
motor[i] = rxConfig->midrc + flight3DConfig->deadband3d_throttle; motor[i] = rxConfig->midrc + flight3DConfig->deadband3d_throttle;
break; break;
case(THROTTLE_NORMAL): default:
break; break;
} }
} }
@ -873,6 +868,7 @@ void mixTable(void)
motor[i] = constrain(motor[i], escAndServoConfig->mincommand, escAndServoConfig->maxthrottle); motor[i] = constrain(motor[i], escAndServoConfig->mincommand, escAndServoConfig->maxthrottle);
} }
} }
}
if (ARMING_FLAG(ARMED)) { if (ARMING_FLAG(ARMED)) {
if (!(IS_RC_MODE_ACTIVE(BOXAIRMODE))) { if (!(IS_RC_MODE_ACTIVE(BOXAIRMODE))) {