Index: src/mixer.c
===================================================================
--- src/mixer.c (revision 286)
+++ src/mixer.c (working copy)
@@ -22,10 +22,10 @@
};
static const motorMixer_t mixerQuadX[] = {
- { 1.0f, -1.0f, 1.0f, -1.0f }, // REAR_R
- { 1.0f, -1.0f, -1.0f, 1.0f }, // FRONT_R
- { 1.0f, 1.0f, 1.0f, 1.0f }, // REAR_L
- { 1.0f, 1.0f, -1.0f, -1.0f }, // FRONT_L
+ { 1.0f, -0.5f, 0.5f, -0.5f }, // REAR_R
+ { 1.0f, -0.5f, -0.5f, 0.5f }, // FRONT_R
+ { 1.0f, 0.5f, 0.5f, 0.5f }, // REAR_L
+ { 1.0f, 0.5f, -0.5f, -0.5f }, // FRONT_L
};
static const motorMixer_t mixerBi[] = {
@@ -374,14 +374,22 @@
for (i = 0; i < numberMotor; i++) {
if (maxMotor > cfg.maxthrottle) // this is a way to still have good gyro corrections if at least one motor reaches its max.
motor[i] -= maxMotor - cfg.maxthrottle;
- motor[i] = constrain(motor[i], cfg.minthrottle, cfg.maxthrottle);
- if ((rcData[THROTTLE]) < cfg.mincheck) {
+
+ //motor[i] = constrain(motor[i], cfg.minthrottle, cfg.maxthrottle);
+ if ((rcData[THROTTLE]) > 1500){
+ motor[i] = constrain(motor[i], 1530, cfg.maxthrottle);
+ }else{
+ motor[i] = constrain(motor[i], cfg.mincommand, 1470);
+ }
+
+ if ((rcData[THROTTLE]) < cfg.mincheck) {
if (!feature(FEATURE_MOTOR_STOP))
motor[i] = cfg.minthrottle;
else
motor[i] = cfg.mincommand;
}
+
if (!f.ARMED)
- motor[i] = cfg.mincommand;
- }
+ //motor[i] = cfg.mincommand;
+ motor[i] = 1500;}
}
Index: src/mw.c
===================================================================
--- src/mw.c (revision 286)
+++ src/mw.c (working copy)
@@ -268,7 +268,10 @@
// TODO clean this up. computeRC should handle this check
if (!feature(FEATURE_SPEKTRUM))
computeRC();
-
+
+ if (!rcOptions[BOXARM]) ///////////////////// important to be always able to disarm
+ f.ARMED = 0;
+
// Failsafe routine
if (feature(FEATURE_FAILSAFE)) {
if (failsafeCnt > (5 * cfg.failsafe_delay) && f.ARMED) { // Stabilize, and set Throttle to specified level
@@ -288,7 +291,7 @@
failsafeCnt++;
}
- if (rcData[THROTTLE] < cfg.mincheck) {
+ if (rcData[THROTTLE] > 1450 && rcData[THROTTLE] <1550) {
errorGyroI[ROLL] = 0;
errorGyroI[PITCH] = 0;
errorGyroI[YAW] = 0;