Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 2117 → Rev 2118

/branches/dongfang_FC_fixedwing/arduino_atmega328/rc.c
185,10 → 185,10
debugOut.analog[22] = RCChannel(CH_RUDDER);
debugOut.analog[23] = RCChannel(CH_THROTTLE);
 
PRYT[CONTROL_ELEVATOR] = RCChannel(CH_ELEVATOR) / RC_SCALING;
PRYT[CONTROL_AILERONS] = RCChannel(CH_AILERONS) / RC_SCALING;
PRYT[CONTROL_RUDDER] = RCChannel(CH_RUDDER) / RC_SCALING;
PRYT[CONTROL_THROTTLE] = RCChannel(CH_THROTTLE) / RC_SCALING;
PRYT[CONTROL_ELEVATOR] = RCChannel(CH_ELEVATOR);
PRYT[CONTROL_AILERONS] = RCChannel(CH_AILERONS);
PRYT[CONTROL_RUDDER] = RCChannel(CH_RUDDER);
PRYT[CONTROL_THROTTLE] = RCChannel(CH_THROTTLE);
} // if RCQuality is no good, we just do nothing.
}
 
/branches/dongfang_FC_fixedwing/arduino_atmega328/rc.h
22,13 → 22,6
#define CH_MODESWITCH 4
#define CH_POTS 4
 
// These are a little individual for differnt R/C systems... trim for zero channel readings at zero
// stick, and trim VARIABLE_OFFSET for full variable range 0..255.
#define VARIABLE_OFFSET 106
#define RC_TRIM 19
// Set this for a full stick range of about -1024..1024.
#define RC_SCALING 1
 
// void RC_periodicTask(void);
void RC_periodicTaskAndPRYT(int16_t* PRYT);
uint8_t RC_getArgument(void);
/branches/dongfang_FC_fixedwing/configuration.h
129,7 → 129,7
uint8_t flags;
} Servo_t;
 
#define SERVO_STABILIZATION_REVERSE 1
//#define SERVO_STABILIZATION_REVERSE 1
 
typedef struct {
uint8_t bitmask;
148,13 → 148,10
uint8_t stickIAilerons;
uint8_t stickIRudder;
 
uint8_t externalControl; // for serial Control
 
uint8_t IFactor;
 
uint8_t batteryVoltageWarning;
uint8_t emergencyThrottle;
uint8_t emergencyFlightDuration;
uint8_t externalControl; // for serial Control
uint8_t batteryWarningVoltage;
 
// Airspeed
uint8_t airspeedCorrection;
161,14 → 158,15
uint8_t isFlyingThreshold;
 
// Servos
uint8_t controlServosReverse;
 
uint8_t servoCount;
uint8_t gimbalServosReverse;
 
uint8_t controlServoMinValue;
uint8_t controlServoMaxValue;
 
uint8_t servoManualMaxSpeed;
Servo_t servoConfigurations[2]; // [PITCH, ROLL]
uint8_t gimbalServoMaxManualSpeed;
Servo_t gimbalServoConfigurations[2]; // [PITCH, ROLL]
 
// Outputs
output_flash_t outputFlash[2];
/branches/dongfang_FC_fixedwing/flight.c
107,9 → 107,9
term[CONTROL_THROTTLE] = controls[CONTROL_THROTTLE];
 
// These params are just left the same in all modes. In MANUAL and RATE the results are ignored anyway.
target[PITCH] += (controls[CONTROL_ELEVATOR] * staticParams.stickIElevator) >> 7;
target[ROLL] += (controls[CONTROL_AILERONS] * staticParams.stickIAilerons) >> 7;
target[YAW] += (controls[CONTROL_RUDDER] * staticParams.stickIRudder) >> 7;
target[PITCH] += ((int32_t)controls[CONTROL_ELEVATOR] * staticParams.stickIElevator) >> 7;
target[ROLL] += ((int32_t)controls[CONTROL_AILERONS] * staticParams.stickIAilerons) >> 7;
target[YAW] += ((int32_t)controls[CONTROL_RUDDER] * staticParams.stickIRudder) >> 7;
 
for (axis = PITCH; axis <= YAW; axis++) {
if (target[axis] > OVER180) {
127,6 → 127,8
error[axis] = maxError[axis];
} else if (error[axis] < -maxError[axis]) {
error[axis] =- maxError[axis];
} else {
// update I parts here for angles mode. Ĩ parts in rate mode is something different.
}
 
#define LOG_P_SCALE 6
158,9 → 160,8
else
PDPart[axis] -= anglePart;
}
 
// Add I parts here... these are integrated errors.
// When an error wraps, actually its I part should be negated or something...
 
term[axis] = controls[axis] + PDPart[axis] + IPart[axis];
}
 
/branches/dongfang_FC_fixedwing/rc.c
197,10 → 197,10
debugOut.analog[22] = RCChannel(CH_RUDDER);
debugOut.analog[23] = RCChannel(CH_THROTTLE);
 
PRYT[CONTROL_ELEVATOR] = RCChannel(CH_ELEVATOR) / RC_SCALING;
PRYT[CONTROL_AILERONS] = RCChannel(CH_AILERONS) / RC_SCALING;
PRYT[CONTROL_RUDDER] = RCChannel(CH_RUDDER) / RC_SCALING;
PRYT[CONTROL_THROTTLE] = RCChannel(CH_THROTTLE) / RC_SCALING;
PRYT[CONTROL_ELEVATOR] = RCChannel(CH_ELEVATOR);
PRYT[CONTROL_AILERONS] = RCChannel(CH_AILERONS);
PRYT[CONTROL_RUDDER] = RCChannel(CH_RUDDER);
PRYT[CONTROL_THROTTLE] = RCChannel(CH_THROTTLE);
} // if RCQuality is no good, we just do nothing.
}
 
/branches/dongfang_FC_fixedwing/rc.h
22,8 → 22,6
#define CH_MODESWITCH 4
#define CH_POTS 4
 
#define RC_SCALING 2
 
// void RC_periodicTask(void);
void RC_periodicTaskAndPRYT(int16_t* PRYT);
uint8_t RC_getArgument(void);