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:
parent
91d12a0b7c
commit
2f6eeed6f5
1 changed files with 23 additions and 27 deletions
|
@ -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))) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue