Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 1140 → Rev 1141

/branches/thjac/V1_11/pitch.c
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;