11,13 → 11,18 |
#include "pitch_md.h" |
#include "pitch.h" |
|
#define UNDEFINED 255 |
#define INVALID 255 |
|
int pitchInitialStickValue = UNDEFINED; |
unsigned char pitchMode; |
|
|
char *pitchModeStrings[] = { |
"Normal ", |
"Neutral ", |
"MD " |
"MD ", |
"Inaktiv " |
}; |
|
|
34,8 → 39,40 |
*/ |
void pitch_init( void ) { |
|
// Nur beim Einschalten ermitteln, da beim Setting-Wechsel ungültig |
if( pitchInitialStickValue == UNDEFINED ) { |
|
// Warten, bis ein gültiger Wert von der Fernsteuerung anliegt |
unsigned int timer = SetDelay( 500 ); |
while( !CheckDelay( timer ) ); |
|
pitchInitialStickValue = PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ]; |
} |
|
pitchMode = PARAM_PITCH_MODE; |
|
/* Die Stick-Position beim Einschalten muß mit dem im Setting eingestellten |
* Pitch-Modus übereinstimmen. Sonst wird die Pitch-Steuerung aus Sicherheits- |
* gründen deaktiviert. Selbiges gilt, wenn die Höhenregelung deaktiviert wurde. |
*/ |
switch( pitchMode ) { |
// Pitch-Modi mit neutralisiertem Gas |
case PARAM_PITCH_MODE_NEUTRAL: |
case PARAM_PITCH_MODE_MD: |
if( !( EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG ) ) |
pitchMode = PARAM_PITCH_MODE_INVALID; |
if( abs( pitchInitialStickValue ) > PARAM_PITCH_STICK_THRESHOLD ) |
pitchMode = PARAM_PITCH_MODE_INVALID; |
break; |
|
// Pitch-Modi mit 0-Gas |
case PARAM_PITCH_MODE_NORMAL: |
if( pitchInitialStickValue > 35 - 120 ) |
pitchMode = PARAM_PITCH_MODE_INVALID; |
break; |
} |
|
pitch_neutral_init(); |
pitch_md_init(); |
|
// FIXME Funktioniert noch nicht |
64,8 → 101,11 |
case PARAM_PITCH_MODE_MD: |
return pitch_md_value(); |
|
case PARAM_PITCH_MODE_NORMAL: |
return pitch_mk_value(); |
|
default: |
return pitch_mk_value(); |
return 0; |
} |
} |
|
75,7 → 115,7 |
*/ |
int pitch_mk_value( void ) { |
register int stickValue = PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ]; |
register int pitchCount = stickValue + 120; // Warum 120? Gas= 0 ist -125 |
register int pitchCount = stickValue + 120; |
|
DebugOut.Analog[26] = stickValue; |
DebugOut.Analog[28] = pitchCount; |