Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 1068 → Rev 1076

/branches/thjac/V1_00/fc.c
657,35 → 657,43
static int stick_nick,stick_roll;
ParameterZuordnung();
 
#define MAX_CHAN_VAL 125L
#define COS45 7071L // cos( -45 ) * 10000
 
long chanNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]];
long chanRoll = -PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]];
long chanNick = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]];
long chanRoll = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]];
 
int chanNickDiff;
int chanRollDiff;
 
/* Über Parameter läßt sich zwischen "+" und "X" - Formations
* umschalten (sh. parameter.h)
*/
if( PARAM_X_FORMATION ) {
// Stick-Koordinatensystem um -45° (rechts) drehen
chanNick *= COS45;
chanRoll *= COS45;
chanRoll = -chanRoll;
// Stick-Koordinatensystem um -45° (rechts) drehen
chanNick *= COS45;
chanRoll *= COS45;
int chanNickTemp = ( chanNick - chanRoll ) / 10000L;
int chanRollTemp = ( chanRoll + chanNick ) / 10000L;
int chanNickTemp = ( chanNick - chanRoll ) / 10000L;
int chanRollTemp = ( chanRoll + chanNick ) / 10000L;
 
chanNick = chanNickTemp;
chanRoll = -chanRollTemp;
chanNick = chanNickTemp;
chanRoll = -chanRollTemp;
 
if (chanNick > MAX_CHAN_VAL)
chanNick = MAX_CHAN_VAL;
if (chanNick < -MAX_CHAN_VAL)
chanNick = -MAX_CHAN_VAL;
if (chanRoll > MAX_CHAN_VAL)
chanRoll = MAX_CHAN_VAL;
if (chanRoll < -MAX_CHAN_VAL)
chanRoll = -MAX_CHAN_VAL;
if (chanNick > MAX_CHAN_VAL)
chanNick = MAX_CHAN_VAL;
if (chanNick < -MAX_CHAN_VAL)
chanNick = -MAX_CHAN_VAL;
if (chanRoll > MAX_CHAN_VAL)
chanRoll = MAX_CHAN_VAL;
if (chanRoll < -MAX_CHAN_VAL)
chanRoll = -MAX_CHAN_VAL;
}
 
chanNickDiff = ( ( chanNick - chanNickPrev ) / 3) * 3;
chanRollDiff = ( ( chanRoll - chanRollPrev ) / 3) * 3;