/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); |