Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 1117 → Rev 1118

/branches/thjac/V1_10/eeprom.c
40,14 → 40,14
EE_Parameter.NotGasZeit = 30; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 32;
EE_Parameter.UserParam1 = 7; // zur freien Verwendung
EE_Parameter.UserParam2 = 2; // zur freien Verwendung
EE_Parameter.UserParam1 = 0; // zur freien Verwendung
EE_Parameter.UserParam2 = 0; // zur freien Verwendung
EE_Parameter.UserParam3 = 0; // zur freien Verwendung
EE_Parameter.UserParam4 = 10; // zur freien Verwendung
EE_Parameter.UserParam5 = 85; // zur freien Verwendung
EE_Parameter.UserParam6 = 9; // zur freien Verwendung
EE_Parameter.UserParam7 = 1; // zur freien Verwendung
EE_Parameter.UserParam8 = 22; // zur freien Verwendung
EE_Parameter.UserParam4 = 0; // zur freien Verwendung
EE_Parameter.UserParam5 = 0; // zur freien Verwendung
EE_Parameter.UserParam6 = 0; // zur freien Verwendung
EE_Parameter.UserParam7 = 0; // zur freien Verwendung
EE_Parameter.UserParam8 = 0; // zur freien Verwendung
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
106,14 → 106,14
EE_Parameter.NotGasZeit = 30; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 32;
EE_Parameter.UserParam1 = 7; // zur freien Verwendung
EE_Parameter.UserParam2 = 2; // zur freien Verwendung
EE_Parameter.UserParam1 = 0; // zur freien Verwendung
EE_Parameter.UserParam2 = 0; // zur freien Verwendung
EE_Parameter.UserParam3 = 0; // zur freien Verwendung
EE_Parameter.UserParam4 = 10; // zur freien Verwendung
EE_Parameter.UserParam5 = 85; // zur freien Verwendung
EE_Parameter.UserParam6 = 9; // zur freien Verwendung
EE_Parameter.UserParam7 = 1; // zur freien Verwendung
EE_Parameter.UserParam8 = 22; // zur freien Verwendung
EE_Parameter.UserParam4 = 0; // zur freien Verwendung
EE_Parameter.UserParam5 = 0; // zur freien Verwendung
EE_Parameter.UserParam6 = 0; // zur freien Verwendung
EE_Parameter.UserParam7 = 0; // zur freien Verwendung
EE_Parameter.UserParam8 = 0; // zur freien Verwendung
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
173,14 → 173,14
EE_Parameter.NotGasZeit = 20; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 16;
EE_Parameter.UserParam1 = 7; // zur freien Verwendung
EE_Parameter.UserParam2 = 2; // zur freien Verwendung
EE_Parameter.UserParam1 = 0; // zur freien Verwendung
EE_Parameter.UserParam2 = 0; // zur freien Verwendung
EE_Parameter.UserParam3 = 0; // zur freien Verwendung
EE_Parameter.UserParam4 = 10; // zur freien Verwendung
EE_Parameter.UserParam5 = 85; // zur freien Verwendung
EE_Parameter.UserParam6 = 9; // zur freien Verwendung
EE_Parameter.UserParam7 = 1; // zur freien Verwendung
EE_Parameter.UserParam8 = 22; // zur freien Verwendung
EE_Parameter.UserParam4 = 0; // zur freien Verwendung
EE_Parameter.UserParam5 = 0; // zur freien Verwendung
EE_Parameter.UserParam6 = 0; // zur freien Verwendung
EE_Parameter.UserParam7 = 0; // zur freien Verwendung
EE_Parameter.UserParam8 = 0; // zur freien Verwendung
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
EE_Parameter.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
/branches/thjac/V1_10/fc.c
126,8 → 126,10
unsigned char Parameter_DynamicStability = 100;
unsigned char Parameter_J16Bitmask; // for the J16 Output
unsigned char Parameter_J16Timing; // for the J16 Output
unsigned char Parameter_J16Brightness; // for the J16 Output
unsigned char Parameter_J17Bitmask; // for the J17 Output
unsigned char Parameter_J17Timing; // for the J17 Output
unsigned char Parameter_J17Brightness; // for the J17 Output
unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard
unsigned char Parameter_NaviGpsGain;
unsigned char Parameter_NaviGpsP;
437,8 → 439,11
CHK_POTI(Parameter_AchsKopplung1, EE_Parameter.AchsKopplung1,0,255);
CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255);
CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255);
 
CHK_POTI_MM(Parameter_J16Timing,EE_Parameter.J16Timing,1,255);
CHK_POTI_MM(Parameter_J16Brightness,PARAM_LED_BRIGHTNESS_J16,0,250);
CHK_POTI_MM(Parameter_J17Timing,EE_Parameter.J17Timing,1,255);
CHK_POTI_MM(Parameter_J17Brightness,PARAM_LED_BRIGHTNESS_J17,0,250);
 
// CHK_POTI(Parameter_NaviGpsModeControl,EE_Parameter.NaviGpsModeControl,0,255);
//CHK_POTI(Parameter_NaviGpsGain,EE_Parameter.NaviGpsGain,0,255);
/branches/thjac/V1_10/fc.h
47,8 → 47,10
void SetNeutral(void);
void Piep(unsigned char Anzahl);
extern void DefaultKonstanten(void);
void DefaultStickMapping(void);
void DefaultKonstanten1(void);
void DefaultKonstanten2(void);
void DefaultKonstanten3(void);
 
extern unsigned char h,m,s;
extern volatile unsigned char Timeout ;
153,8 → 155,10
extern unsigned char Parameter_AchsGegenKopplung1;
extern unsigned char Parameter_J16Bitmask; // for the J16 Output
extern unsigned char Parameter_J16Timing; // for the J16 Output
extern unsigned char Parameter_J16Brightness; // for the J16 Output
extern unsigned char Parameter_J17Bitmask; // for the J17 Output
extern unsigned char Parameter_J17Timing; // for the J17 Output
extern unsigned char Parameter_J17Brightness; // for the J17 Output
/*
extern unsigned char Parameter_NaviGpsModeControl; // Parameters for the Naviboard
extern unsigned char Parameter_NaviGpsGain;
/branches/thjac/V1_10/led.c
7,9 → 7,9
 
unsigned char J16Blinkcount = 0, J16Mask = 1;
unsigned char J17Blinkcount = 0, J17Mask = 1;
unsigned char J16 = 0, J17 = 0;
 
unsigned char lightsEnabled = 0;
unsigned char forceEnabled = 0;
unsigned char lightsEnabled = 0, lightsOn = 0;
 
extern char MotorenEin;
 
22,7 → 22,7
else
J16_OFF;*/
if((enabled && forceEnabled) ^ LED_NEGATE_J16)
if((enabled && lightsOn) ^ LED_NEGATE_J16)
J16_ON;
else
J16_OFF;
36,7 → 36,7
else
J17_OFF;*/
if((enabled && forceEnabled) ^ LED_NEGATE_J17)
if((enabled && lightsOn) ^ LED_NEGATE_J17)
J17_ON;
else
J17_OFF;
46,106 → 46,82
void LED_Init( void ) {
// set PC2 & PC3 as output (control of J16 & J17)
DDRC |= (1<<DDC2)|(1<<DDC3);
setJ16( 0 );
setJ17( 0 );
lightsOn = lightsEnabled = 0;
setJ16( 0);
setJ17( 0);
J16Blinkcount = 0; J16Mask = 128;
J17Blinkcount = 0; J17Mask = 128;
}
 
void checkLightsEnabled(void) {
 
// Mit dem Gier-Stick rechts lassen sich bei stehenden Motoren die LED's ein- und mit links ausschalten
if( !MotorenEin) {
if( PARAM_LED_STICK_ENABLED) {
if ( PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ] > 35-120
&& PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ] < 80 ) {
if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GIER ] ] < -75 )
lightsEnabled = 1;
if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GIER ] ] > 75 )
lightsEnabled = 0;
}
} else
lightsEnabled = 1;
}
 
// Die LED's können mit den Motoren ein- ausgeschaltet werden
if( PARAM_LED_ENGINE_ENABLED)
lightsEnabled = MotorenEin;
 
lightsOn = lightsEnabled;
}
 
// called in UpdateMotors() every 2ms
void LED_Update( void ) {
 
static char delay = 0;
static char j16 = 0;
static char j17 = 0;
if( !MotorenEin ) {
/* Mit dem Gier-Stick rechts lassen sich die LED's ein- und mit links ausschalten.
*/
if( PARAM_LED_STICK_ENABLED ) {
 
if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ] > 35-120 &&
PPM_in[ EE_Parameter.Kanalbelegung[ K_GAS ] ] < 80 ) {
if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GIER ] ] < -75 ) {
lightsEnabled = 1;
}
if( PPM_in[ EE_Parameter.Kanalbelegung[ K_GIER ] ] > 75 ) {
lightsEnabled = 0;
}
}
} else {
lightsEnabled = 1;
}
}
if( PARAM_LED_ENGINE_ENABLED ) {
lightsEnabled = MotorenEin;
}
 
forceEnabled = lightsEnabled;
checkLightsEnabled();
if( !delay-- ) {
 
delay = 4; // 10ms Intervall
delay = 9; // 20ms Intervall
 
// Soll die Unterspannungswarnung zu einem schnelleren Blinken führen?
if( PARAM_LED_WARNING_ENABLED ) {
// Grenze für Unterspannungswarnung erreicht?
if( UBat < EE_Parameter.UnterspannungsWarnung ) {
// Erzwingt die Aktivierung der Ausgänge
if( PARAM_LED_FORCE_WARNING_ENABLED )
forceEnabled = 1;
if( PARAM_LED_WARNING_FAST_ENABLED ) {
delay = 1; // 2,5ms Intervall
} else {
delay = 2; // 5ms Intervall
}
}
// Grenze für Unterspannungswarnung erreicht?
if( PARAM_LED_WARNING_SPEEDUP && UBat < EE_Parameter.UnterspannungsWarnung ) {
if( PARAM_LED_FORCE_WARNING_ENABLED ) // Erzwingt die Aktivierung der Ausgänge
lightsOn = 1;
delay /= PARAM_LED_WARNING_SPEEDUP+1;
}
/* J16
*/
if( ( EE_Parameter.J16Timing > 250 ) && ( Parameter_J16Timing > 230 ) ) {
setJ16( EE_Parameter.J16Bitmask & 128 );
} else if( ( EE_Parameter.J16Timing > 250 ) && ( Parameter_J16Timing < 10 ) ) {
setJ16( !( EE_Parameter.J16Bitmask & 128 ) );
} else if( !J16Blinkcount-- ) {
J16Blinkcount = Parameter_J16Timing-1;
if( J16Mask == 1 )
J16Mask = 128;
else
J16Mask /= 2;
j16 = J16Mask & EE_Parameter.J16Bitmask;
// J16
if( EE_Parameter.J16Timing > 250 && Parameter_J16Timing > 230 )
J16 = EE_Parameter.J16Bitmask & 128;
else if( EE_Parameter.J16Timing > 250 && Parameter_J16Timing < 10 )
J16 = !( EE_Parameter.J16Bitmask & 128 );
else if( !J16Blinkcount-- ) {
J16Blinkcount = Parameter_J16Timing-1;
J16Mask = (J16Mask == 1 ? 0x80 : J16Mask >> 1);
J16 = EE_Parameter.J16Bitmask & J16Mask;
}
/* J17
*/
if( ( EE_Parameter.J17Timing > 250 ) && ( Parameter_J17Timing > 230 ) ) {
setJ17( EE_Parameter.J17Bitmask & 128 );
} else if( ( EE_Parameter.J17Timing > 250 ) && ( Parameter_J17Timing < 10 ) ) {
setJ17( !( EE_Parameter.J17Bitmask & 128 ) );
} else if( !J17Blinkcount-- ) {
J17Blinkcount = Parameter_J17Timing-1;
if( J17Mask == 1 )
J17Mask = 128;
else
J17Mask /= 2;
j17 = J17Mask & EE_Parameter.J17Bitmask;
// J17
if( EE_Parameter.J17Timing > 250 && Parameter_J17Timing > 230)
J17 = EE_Parameter.J17Bitmask & 128 ;
else if( EE_Parameter.J17Timing > 250 && Parameter_J17Timing < 10)
J17 = !( EE_Parameter.J17Bitmask & 128 );
else if( !J17Blinkcount-- ) {
J17Blinkcount = Parameter_J17Timing-1;
J17Mask = (J17Mask == 1 ? 0x80 : J17Mask >> 1);
J17 = EE_Parameter.J17Bitmask & J17Mask;
}
}
 
/*delay: 0...4 - BRIGHTNESS: 0-Aus...5-Max*/
setJ16( j16 && (delay < PARAM_LED_BRIGHTNESS_J16 || UBat < EE_Parameter.UnterspannungsWarnung ));
setJ17( j17 && (delay < PARAM_LED_BRIGHTNESS_J17 || UBat < EE_Parameter.UnterspannungsWarnung ));
// delay: 0...9 - BRIGHTNESS/23: 0-Aus...10-Max - Bei Unterspannung volle Leuchtkraft
setJ16( J16 && (delay < Parameter_J16Brightness/23 || UBat < EE_Parameter.UnterspannungsWarnung ));
setJ17( J17 && (delay < Parameter_J17Brightness/23 || UBat < EE_Parameter.UnterspannungsWarnung ));
}
/branches/thjac/V1_10/led.h
7,5 → 7,6
#define J17_OFF PORTC &= ~(1<<PORTC3)
#define J17_TOGGLE PORTC ^= (1<<PORTC3)
 
extern void checkLightsEnabled(void);
extern void LED_Init(void);
extern void LED_Update(void);
/branches/thjac/V1_10/makefile
5,7 → 5,7
#-------------------------------------------------------------------
VERSION_MAJOR = 1
VERSION_MINOR = 10
VERSION_PATCH = 2
VERSION_PATCH = 3
 
VERSION_SERIAL_MAJOR = 10 # Serial Protocol
VERSION_SERIAL_MINOR = 0 # Serial Protocol
/branches/thjac/V1_10/parameter.h
25,35 → 25,46
 
/* Helligkeit J16
*/
#define PARAM_LED_BRIGHTNESS_J16 ( EE_Parameter.UserParam5 & 0x0f )
#define PARAM_LED_BRIGHTNESS_J16 ( EE_Parameter.UserParam5 ) // 0-250, 25x=PotiX, Wert wird durch 25 geteilt
 
/* Helligkeit J17
*/
#define PARAM_LED_BRIGHTNESS_J17 (( EE_Parameter.UserParam5 & 0xf0 ) >> 4)
#define PARAM_LED_BRIGHTNESS_J17 ( EE_Parameter.UserParam6 ) // 0-250, 25x=PotiX, Wert wird durch 25 geteilt
 
 
/* Wenn die Unterspannungswarnung aktiv wird, kann mit diesem Parameter eingestellt
* werden, daß sich die Blinkfrequenz der LED's verdoppelt.
*/
#define PARAM_LED_WARNING_SPEEDUP ( EE_Parameter.UserParam7 & 0x03 ) // 0=deaktiviert >0=Blinkenbeschleunigung
 
/* Erhöht die Blinkfrequenz für die Unterspannungswarnung.
*/
#define PARAM_LED_WARNING_FAST_ENABLED ( EE_Parameter.UserParam7 & 0x02 ) // 0=Schnelles Blinken, 1=Ganz Schnelles Blinken
 
/* Erzwingt die Aktivierung der LED-Ausgänge im Fall einer
* Unterspannungswarnung.
*/
#define PARAM_LED_FORCE_WARNING_ENABLED ( EE_Parameter.UserParam6 & 0x01 )
#define PARAM_LED_FORCE_WARNING_ENABLED ( EE_Parameter.UserParam7 & 0x04 ) // 0=deaktiviert 1=aktiviert
 
/* Wenn gesetzt, wird der Pegel des Ausgangs J16 vertauscht.
*/
#define PARAM_LED_NEGATE_J16 ( EE_Parameter.UserParam6 & 0x02 )
#define LED_NEGATE_J16 ( PARAM_LED_NEGATE_J16 >> 1 )
#define PARAM_LED_NEGATE_J16 ( EE_Parameter.UserParam7 & 0x08 ) // 0=normal 1=invertiert
#define LED_NEGATE_J16 ( PARAM_LED_NEGATE_J16 >> 3 )
 
/* Wenn gesetzt, wird der Pegel des Ausgangs J17 vertauscht.
*/
#define PARAM_LED_NEGATE_J17 ( EE_Parameter.UserParam6 & 0x04 )
#define LED_NEGATE_J17 ( PARAM_LED_NEGATE_J17 >> 2 )
#define PARAM_LED_NEGATE_J17 ( EE_Parameter.UserParam7 & 0x10 ) // 0=normal 1=invertiert
#define LED_NEGATE_J17 ( PARAM_LED_NEGATE_J17 >> 4 )
 
/* Erhöht die Blinkfrequenz für die Unterspannungswarnung.
/* Die Ausgänge J16/J17 lassen sich wahlweise über die Motoren koppeln, so daß
* die Ausgänge bei ausgeschalteten Motoren unabhängig vom eingestellten Blink-Muster
* deaktiviert sind.
*/
#define PARAM_LED_WARNING_FAST_ENABLED ( EE_Parameter.UserParam6 & 0x08 )
#define PARAM_LED_ENGINE_ENABLED ( EE_Parameter.UserParam7 & 0x20 ) // 0=deaktiviert 1=an Motoren gekoppelt
 
/* Die Motoren können über diesen Parameter aktiviert werden. Ein Wert von 0
* deaktiviert die Motoren und kann zum Testen verwendet werden.
/* Die Ausgänge J16/J17 lassen sich mit dem Gear-Stick ein- und ausschalten.
*/
#define PARAM_ENGINE_ENABLED ( EE_Parameter.UserParam7 & 0x01 ) // 0=deaktiviert 1=aktiviert
#define PARAM_LED_STICK_ENABLED ( EE_Parameter.UserParam7 & 0x40 ) // 0=deaktiviert 1=aktiviert, wird durch Motorkopplung übersteuert
 
/* Dieser Parameter legt fest, ob in '+'-Formation (normal) oder 'X'-Formation
* geflogen werden soll. Zur Umschaltung reicht das Setzen des Parameters. Ein
64,29 → 75,14
/* Steuert, ob beim bzw. vor dem Start der Motoren eine Kalibrierung erfolgen
* soll.
*/
#define PARAM_CAL_ON_START ( EE_Parameter.UserParam8 & 0x02 )
#define PARAM_CAL_ON_START ( EE_Parameter.UserParam8 & 0x02 ) // 0=deaktiviert 1=aktiviert
 
/* Die Ausgänge J16/J17 lassen sich wahlweise über die Motoren koppeln, so daß
* die Ausgänge bei ausgeschalteten Motoren unabhängig vom eingestellten Blink-Muster
* deaktiviert sind.
*/
#define PARAM_LED_ENGINE_ENABLED ( EE_Parameter.UserParam8 & 0x04 ) // 0=deaktiviert 1=an Motoren gekoppelt
 
/* Die Ausgänge J16/J17 lassen sich mit dem Gear-Stick ein- und ausschalten.
*/
#define PARAM_LED_STICK_ENABLED ( EE_Parameter.UserParam8 & 0x08 )
 
/* Wenn die Unterspannungswarnung aktiv wird, kann mit diesem Parameter eingestellt
* werden, daß sich die Blinkfrequenz der LED's verdoppelt.
*/
#define PARAM_LED_WARNING_ENABLED ( EE_Parameter.UserParam8 & 0x10 ) // 0=deaktiviert 1=Schnelles Blinken
 
/* Wenn gesetzt, dann wird mit neutralisiertem Pitch-Stick und automatisch
* zugeschalteter Höhenregelung geflogen. Damit bei versehentlich falscher
* Konfiguration kein Schaden entsteht, muß zusätzlich beim Einschalten
* der FlightControl der Gas-Stick in Mittelstellung stehen.
*/
#define PARAM_PITCH_NEUTRAL ( EE_Parameter.UserParam8 & 0x20 ) // 0=normal 1=Neutral-Pitch
#define PARAM_PITCH_NEUTRAL ( EE_Parameter.UserParam8 & 0x04 ) // 0=normal 1=Neutral-Pitch
 
/* Wenn gesetzt, wird nach ca. 2s andauernder Stick-Stellung auf Minimum
* ein Reset der Pitch-Regelung durchgeführt, so daß der MK ohne Aus- und
94,7 → 90,12
* schaltet auf Leerlaufgas zurück und der Stick kann losgelassen werden,
* ohne das Gas gegeben wird.
*/
#define PARAM_PITCH_RESTART_ENABLED ( EE_Parameter.UserParam8 & 0x40 ) // 0=deaktiviert 1=aktiviert
#define PARAM_PITCH_RESTART_ENABLED ( EE_Parameter.UserParam8 & 0x08 ) // 0=deaktiviert 1=aktiviert
 
/* Die Motoren können über diesen Parameter aktiviert werden. Ein Wert von 0
* deaktiviert die Motoren und kann zum Testen verwendet werden.
*/
#define PARAM_ENGINE_ENABLED ( EE_Parameter.UserParam8 & 0x10 ) // 0=deaktiviert 1=aktiviert
 
 
#endif // PARAMETER_H
/branches/thjac/V1_10/spi.c
157,7 → 157,7
//------------------------------------------------------
void UpdateSPI_Buffer(void)
{
static unsigned char i =0;
// static unsigned char i =0;
signed int tmp;
cli();
 
/branches/thjac/V1_10/version.txt
210,3 → 210,11
- Die Pegel von J16/J17 werden auch im 'Aus'-Zustand invertiert
- J16/J17 können getrennt voneinander invertiert werden
- Einfache PWM auf J16/17 (0,20,40,60,80,100%, getrennt voneinander einstellbar)
 
V1_10d K. Rheinwald
- PWM feiner abgestuft (0-100% in 10% Schritten, getrennt voneinander einstellbar)
- Timing von J16/17 von 10 auf 20ms verdoppelt -> Timings im MK-Tool müssen halbiert werden
- PWM funktioniert auch für Timing über PotiX
- Reihenfolge der User Parameters and Bitfields aufgeräumt - Settings checken!
- User Parameter Defaults werden bei Initialisierung auf 0 gesetzt
- Einige Warnings bereinigt