Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 59 → Rev 60

/DUBwise/misc/pc-komp-ref/definitions
0,0 → 1,176
--Kanalbelegung[8]
to_cat("Channels", [
 
{:pos=>act_pos , :name=>"Nick" , :typ=>"STICK" },
{:pos=>act_pos+1 , :name=>"Roll" , :typ=>"STICK" },
{:pos=>act_pos+2 , :name=>"Accelerate" , :typ=>"STICK" },
{:pos=>act_pos+3 , :name=>"Gier" , :typ=>"STICK" },
{:pos=>act_pos+4 , :name=>"POTI1" , :typ=>"STICK" },
{:pos=>act_pos+5 , :name=>"POTI2" , :typ=>"STICK" },
{:pos=>act_pos+6 , :name=>"POTI3" , :typ=>"STICK" },
{:pos=>act_pos+7 , :name=>"POTI4" , :typ=>"STICK" },
])
 
act_pos+=8
--GlobalConfig
 
to_cat("Configuration", [
{:pos=>act_pos*8 , :name=>"ALTITUDE_CONTROL" , :typ=>"BITSWITCH" },
{:pos=>act_pos*8+1 , :name=>"Switch for Setpoint" , :typ=>"BITSWITCH" },
{:pos=>act_pos*8+2 , :name=>"Heading Hold" , :typ=>"BITSWITCH" },
{:pos=>act_pos*8+3 , :name=>"Compas " , :typ=>"BITSWITCH" },
{:pos=>act_pos*8+4 , :name=>"Orientation" , :typ=>"BITSWITCH" },
{:pos=>act_pos*8+5 , :name=>"GPS" , :typ=>"BITSWITCH" }
])
 
 
act_pos+=1
 
--Hoehe_MinGas
to_cat("Altitude", [{ :pos=>act_pos , :name=>"Min. Accelerate" , :typ=>"BYTE" }] )
act_pos+=1
--Luftdruck_D
to_cat("Altitude", [{ :pos=>act_pos , :name=>"Barometric D" , :typ=>"BYTE" }] )
act_pos+=1
--MaxHoehe
to_cat("Altitude", [{ :pos=>act_pos , :name=>"Setpoint" , :typ=>"BYTE" }] )
act_pos+=1
--Hoehe_P
to_cat("Altitude", [{ :pos=>act_pos , :name=>"Altitude P" , :typ=>"BYTE" }] )
act_pos+=1
--Hoehe_Verstaerkung
to_cat("Altitude", [{ :pos=>act_pos , :name=>"Gain" , :typ=>"BYTE" }] )
act_pos+=1
--Hoehe_ACC_Wirkung
to_cat("Altitude", [{ :pos=>act_pos , :name=>"Z-ACC" , :typ=>"BYTE" }] )
act_pos+=1
--Stick_P
to_cat("Stick", [{ :pos=>act_pos , :name=>"Nick/Roll P" , :typ=>"BYTE" }] )
act_pos+=1
--Stick_D
to_cat("Stick", [{ :pos=>act_pos , :name=>"Nick/Roll D" , :typ=>"BYTE" }] )
act_pos+=1
--Gier_P
to_cat("Stick", [{ :pos=>act_pos , :name=>"Gier P" , :typ=>"BYTE" }] )
act_pos+=1
--Gas_Min
to_cat("Other", [{ :pos=>act_pos , :name=>"Min Gas" , :typ=>"BYTE" }] )
act_pos+=1
--Gas_Max
to_cat("Other", [{ :pos=>act_pos , :name=>"Max Gas" , :typ=>"BYTE" }] )
act_pos+=1
--GyroAccFaktor
to_cat("Gyro", [{ :pos=>act_pos , :name=>"ACC/Gyro Factor" , :typ=>"BYTE" }] )
act_pos+=1
--KompassWirkung
to_cat("Other", [{ :pos=>act_pos , :name=>"Compass Effect" , :typ=>"BYTE" }] )
act_pos+=1
--Gyro_P
to_cat("Gyro", [{ :pos=>act_pos , :name=>"P-Rate" , :typ=>"BYTE" }] )
act_pos+=1
--Gyro_I
to_cat("Gyro", [{ :pos=>act_pos , :name=>"I-Rate" , :typ=>"BYTE" }] )
act_pos+=1
--UnterspannungsWarnung
to_cat("Other", [{ :pos=>act_pos , :name=>"Voltage Warning" , :typ=>"BYTE" }] )
act_pos+=1
--NotGas;
to_cat("Other", [{ :pos=>act_pos , :name=>"Distress Gas" , :typ=>"BYTE" }] )
act_pos+=1
--NotGasZeit
to_cat("Other", [{ :pos=>act_pos , :name=>"Distress Gas Time" , :typ=>"BYTE" }] )
act_pos+=1
--UfoAusrichtung
act_pos+=1
--I_Faktor
act_pos+=1
--UserParam1
to_cat("User", [{ :pos=>act_pos , :name=>"Param 1" , :typ=>"BYTE" }] )
act_pos+=1
--UserParam2
to_cat("User", [{ :pos=>act_pos , :name=>"Param 2" , :typ=>"BYTE" }] )
act_pos+=1
--UserParam3
to_cat("User", [{ :pos=>act_pos , :name=>"Param 3" , :typ=>"BYTE" }] )
act_pos+=1
--UserParam4
to_cat("User", [{ :pos=>act_pos , :name=>"Param 4" , :typ=>"BYTE" }] )
act_pos+=1
--ServoNickControl
to_cat("Camera", [{ :pos=>act_pos , :name=>"Servo control" , :typ=>"BYTE" }] )
act_pos+=1
--ServoNickComp;
to_cat("Camera", [{ :pos=>act_pos , :name=>"Nick compensation" , :typ=>"BYTE" }] )
act_pos+=1
--ServoNickMin
to_cat("Camera", [{ :pos=>act_pos , :name=>"Servo min" , :typ=>"BYTE" }] )
act_pos+=1
--ServoNickMax
to_cat("Camera", [{ :pos=>act_pos , :name=>"Servo max" , :typ=>"BYTE" }] )
act_pos+=1
--ServoNickRefresh
to_cat("Camera", [{ :pos=>act_pos , :name=>"Refresh rate" , :typ=>"BYTE" }] )
act_pos+=1
--LoopGasLimit
to_cat("Looping", [{ :pos=>act_pos , :name=>"Gas Limit" , :typ=>"BYTE" }] )
act_pos+=1
--LoopThreshold
to_cat("Looping", [{ :pos=>act_pos , :name=>"Threshold" , :typ=>"BYTE" }] )
act_pos+=1
--LoopHysterese
to_cat("Looping", [{ :pos=>act_pos , :name=>"Hysterese" , :typ=>"BYTE" }] )
act_pos+=1
--AchsKopplung1
to_cat("Coupling", [{ :pos=>act_pos , :name=>"Yaw pos. feedback" , :typ=>"BYTE" }] )
act_pos+=1
--AchsGegenKopplung1
to_cat("Coupling", [{ :pos=>act_pos , :name=>"Yaw neg. feedback" , :typ=>"BYTE" }] )
act_pos+=1
--WinkelUmschlagNick
to_cat("Looping", [{ :pos=>act_pos , :name=>"TurnOver Nick" , :typ=>"BYTE" }] )
act_pos+=1
--WinkelUmschlagRoll
to_cat("Looping", [{ :pos=>act_pos , :name=>"TurnOver Roll" , :typ=>"BYTE" }] )
act_pos+=1
--GyroAccAbgleich
to_cat("Gyro", [{ :pos=>act_pos , :name=>"ACC/Gyro Comp" , :typ=>"BYTE" }] )
act_pos+=1
--Driftkomp
to_cat("Gyro", [{ :pos=>act_pos , :name=>"Drift-Compensation" , :typ=>"BYTE" }] )
act_pos+=1
--DynamicStability
to_cat("Gyro", [{ :pos=>act_pos , :name=>"Dynamic stability" , :typ=>"BYTE" }] )
act_pos+=1
--UserParam5
to_cat("User", [{ :pos=>act_pos , :name=>"Param 5" , :typ=>"BYTE" }] )
act_pos+=1
--UserParam6
to_cat("User", [{ :pos=>act_pos , :name=>"Param 6" , :typ=>"BYTE" }] )
act_pos+=1
--UserParam7
to_cat("User", [{ :pos=>act_pos , :name=>"Param 7" , :typ=>"BYTE" }] )
act_pos+=1
--UserParam8
to_cat("User", [{ :pos=>act_pos , :name=>"Param 8" , :typ=>"BYTE" }] )
act_pos+=1
--LoopConfig
 
to_cat("Looping", [
{:pos=>act_pos*8 , :name=>"UP" , :typ=>"BITSWITCH" },
{:pos=>act_pos*8+1 , :name=>"DOWN" , :typ=>"BITSWITCH" },
{:pos=>act_pos*8+2 , :name=>"LEFT" , :typ=>"BITSWITCH" },
{:pos=>act_pos*8+3 , :name=>"RIGHT" , :typ=>"BITSWITCH" }
])
act_pos+=1
--ServoNickCompInvert
to_cat("Camera", [{ :pos=>act_pos*8 , :name=>"Invert Direction" , :typ=>"BITSWITCH" }] )
act_pos+=1
--Reserved[4]
act_pos+=4
--Reserved[7]
act_pos+=7
--Name[12]
name_pos=act_pos
act_pos+=12
end_pos=act_pos
 
/DUBwise/misc/pc-komp-ref/generate.rb
0,0 → 1,122
require 'rio'
 
 
all_tabs=[]
 
all_names=[]
all_positions=[]
all_types=[]
 
all_namestarts=[]
all_lengths=[]
 
function_hash={}
act_name=""
rio("definitions").read.each_line { |line|
 
if line =~ /--/
act_name=line.split("--")[1].delete!("\r\n")
function_hash[act_name]=""
else
function_hash[act_name] << line
end
}
 
#puts function_hash.inspect
#exit
 
Dir["header_files/*.h"].sort.each { |e|
puts "----------------" + e
new=""
start=false
rio(e).each_line { |l|
start=true if l =~ /struct\r/
start=false if l =~ /\}/
if (l =~ /;/ ) && start
new << l
end
 
}
 
act_pos=0
name_pos=0
end_pos=0
@categorys=[]
@category={}
def to_cat(name,items)
@categorys << name
@category[name]=[] if !@category[name]
@category[name] |= items
end
 
 
 
new.each_line { |l|
found=false
function_hash.each_pair { |k,v|
if l.scan(k)!=[]
found=true
p "found" + k
puts v
puts act_pos
instance_eval(v)
end
}
if !found
p "line not found " + l
exit
end
}
#p @category
@categorys.uniq!
@categorys.sort!
all_tabs << ["{\"" + @categorys.join("\",\"") + "\"}"]
puts "[\"" + @categorys.join("\",\"") + "\"]"
 
 
all_names << ["{"+@categorys.map { |c|
"{\"" + @category[c].map { |e|
e[:name]
}.join("\",\"") + "\"}"
}.join(",")+"}"]
 
all_positions << ["{"+@categorys.map { |c|
"{" + @category[c].map { |e|
e[:pos]
}.join(",") + "}"
}.join(",")+"}"]
 
all_types << ["{"+ @categorys.map { |c|
"{PARAMTYPE_" + @category[c].map { |e|
e[:typ]
}.join(",PARAMTYPE_") + "}"
}.join(",") + "}"]
 
all_namestarts << name_pos
all_lengths << end_pos
#rio(e+".new") <new
 
 
 
 
 
}
 
puts "// -- start generated code --"
puts "public final static int PARAMTYPE_BYTE=0;"
puts "public final static int PARAMTYPE_BITSWITCH=1;"
puts "public final static int PARAMTYPE_STICK=2;"
puts "public final static String[][] all_tab_names={"+all_tabs.join(",")+"};"
puts "public final static String[][][] all_field_names={"+all_names.join(",")+"};"
puts "public final static int[][][] all_field_positions={"+all_positions.join(",")+"};"
puts "public final static int[][][] all_field_types={"+all_types.join(",")+"};"
 
 
puts "public final static int[] all_name_positions={"+all_namestarts.join(",")+"};"
puts "public final static int[] all_lengths={"+all_lengths.join(",")+"};"
puts "// -- end generated code --"
/DUBwise/misc/pc-komp-ref/header_files/4.h
0,0 → 1,106
/*#######################################################################################
Flight Control
#######################################################################################*/
 
#ifndef _FC_H
#define _FC_H
 
extern volatile unsigned char Timeout;
extern unsigned char Sekunde,Minute;
extern volatile long IntegralNick,IntegralNick2;
extern volatile long IntegralRoll,IntegralRoll2;
extern volatile long Mess_IntegralNick,Mess_IntegralNick2;
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2;
extern volatile long Mess_Integral_Hoch;
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2;
extern volatile int KompassValue;
extern volatile int KompassStartwert;
extern volatile int KompassRichtung;
extern int HoehenWert;
extern int SollHoehe;
extern volatile int MesswertNick,MesswertRoll,MesswertGier;
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll;
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch;
extern volatile float NeutralAccZ;
 
 
void MotorRegler(void);
void SendMotorData(void);
void CalibrierMittelwert(void);
void Mittelwert(void);
void SetNeutral(void);
 
unsigned char h,m,s;
volatile unsigned char Timeout ;
unsigned char CosinusNickWinkel, CosinusRollWinkel;
volatile long IntegralNick,IntegralNick2;
volatile long IntegralRoll,IntegralRoll2;
volatile long Integral_Gier;
volatile long Mess_IntegralNick,Mess_IntegralNick2;
volatile long Mess_IntegralRoll,Mess_IntegralRoll2;
volatile long Mess_Integral_Gier;
volatile int DiffNick,DiffRoll;
extern int Poti1, Poti2, Poti3, Poti4;
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
unsigned char MotorWert[5];
volatile unsigned char SenderOkay;
int StickNick,StickRoll,StickGier;
char MotorenEin;
extern void DefaultKonstanten(void);
 
#define STRUCT_PARAM_LAENGE 58
struct mk_param_struct
{
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv
unsigned char Hoehe_MinGas; // Wert : 0-100
unsigned char Luftdruck_D; // Wert : 0-250
unsigned char MaxHoehe; // Wert : 0-32
unsigned char Hoehe_P; // Wert : 0-32
unsigned char Hoehe_Verstaerkung; // Wert : 0-50
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250
unsigned char Stick_P; // Wert : 1-6
unsigned char Stick_D; // Wert : 0-64
unsigned char Gier_P; // Wert : 1-20
unsigned char Gas_Min; // Wert : 0-32
unsigned char Gas_Max; // Wert : 33-250
unsigned char GyroAccFaktor; // Wert : 1-64
unsigned char KompassWirkung; // Wert : 0-32
unsigned char Gyro_P; // Wert : 10-250
unsigned char Gyro_I; // Wert : 0-250
unsigned char UnterspannungsWarnung; // Wert : 0-250
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen
unsigned char UfoAusrichtung; // X oder + Formation
unsigned char I_Faktor; // Wert : 0-250
unsigned char UserParam1; // Wert : 0-250
unsigned char UserParam2; // Wert : 0-250
unsigned char UserParam3; // Wert : 0-250
unsigned char UserParam4; // Wert : 0-250
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag
unsigned char ServoNickRefresh; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
unsigned char ServoNickCompInvert; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
unsigned char Reserved[7];
char Name[12];
};
 
 
 
 
extern struct mk_param_struct EE_Parameter;
 
extern unsigned char Parameter_Luftdruck_D;
extern unsigned char Parameter_MaxHoehe;
extern unsigned char Parameter_Hoehe_P;
extern unsigned char Parameter_Hoehe_ACC_Wirkung;
extern unsigned char Parameter_KompassWirkung;
extern unsigned char Parameter_Gyro_P;
extern unsigned char Parameter_Gyro_I;
extern unsigned char Parameter_Gier_P;
extern unsigned char Parameter_ServoNickControl;
 
#endif //_FC_H
 
/DUBwise/misc/pc-komp-ref/header_files/5.h
0,0 → 1,119
/*#######################################################################################
Flight Control
#######################################################################################*/
 
#ifndef _FC_H
#define _FC_H
 
extern volatile unsigned int I2CTimeout;
extern unsigned char Sekunde,Minute;
extern volatile long IntegralNick,IntegralNick2;
extern volatile long IntegralRoll,IntegralRoll2;
extern volatile long Mess_IntegralNick,Mess_IntegralNick2;
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2;
extern volatile long Mess_Integral_Hoch;
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2;
extern volatile int KompassValue;
extern volatile int KompassStartwert;
extern volatile int KompassRichtung;
extern int HoehenWert;
extern int SollHoehe;
extern volatile int MesswertNick,MesswertRoll,MesswertGier;
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll;
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch;
extern volatile float NeutralAccZ;
 
 
void MotorRegler(void);
void SendMotorData(void);
void CalibrierMittelwert(void);
void Mittelwert(void);
void SetNeutral(void);
 
unsigned char h,m,s;
volatile unsigned char Timeout ;
unsigned char CosinusNickWinkel, CosinusRollWinkel;
volatile long IntegralNick,IntegralNick2;
volatile long IntegralRoll,IntegralRoll2;
volatile long Integral_Gier;
volatile long Mess_IntegralNick,Mess_IntegralNick2;
volatile long Mess_IntegralRoll,Mess_IntegralRoll2;
volatile long Mess_Integral_Gier;
volatile int DiffNick,DiffRoll;
extern int Poti1, Poti2, Poti3, Poti4;
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
unsigned char MotorWert[5];
volatile unsigned char SenderOkay;
int StickNick,StickRoll,StickGier;
char MotorenEin;
extern void DefaultKonstanten(void);
 
#define STRUCT_PARAM_LAENGE 58
struct mk_param_struct
{
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv
unsigned char Hoehe_MinGas; // Wert : 0-100
unsigned char Luftdruck_D; // Wert : 0-250
unsigned char MaxHoehe; // Wert : 0-32
unsigned char Hoehe_P; // Wert : 0-32
unsigned char Hoehe_Verstaerkung; // Wert : 0-50
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250
unsigned char Stick_P; // Wert : 1-6
unsigned char Stick_D; // Wert : 0-64
unsigned char Gier_P; // Wert : 1-20
unsigned char Gas_Min; // Wert : 0-32
unsigned char Gas_Max; // Wert : 33-250
unsigned char GyroAccFaktor; // Wert : 1-64
unsigned char KompassWirkung; // Wert : 0-32
unsigned char Gyro_P; // Wert : 10-250
unsigned char Gyro_I; // Wert : 0-250
unsigned char UnterspannungsWarnung; // Wert : 0-250
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen
unsigned char UfoAusrichtung; // X oder + Formation
unsigned char I_Faktor; // Wert : 0-250
unsigned char UserParam1; // Wert : 0-250
unsigned char UserParam2; // Wert : 0-250
unsigned char UserParam3; // Wert : 0-250
unsigned char UserParam4; // Wert : 0-250
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag
unsigned char ServoNickRefresh; //
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag
//------------------------------------------------
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen
unsigned char Reserved[4];
char Name[12];
};
 
/*
unsigned char ServoNickMax; // Wert : 0-250
unsigned char ServoNickRefresh; //
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag
//------------------------------------------------
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen
unsigned char Reserved[4];
char Name[12];
*/
extern struct mk_param_struct EE_Parameter;
 
extern unsigned char Parameter_Luftdruck_D;
extern unsigned char Parameter_MaxHoehe;
extern unsigned char Parameter_Hoehe_P;
extern unsigned char Parameter_Hoehe_ACC_Wirkung;
extern unsigned char Parameter_KompassWirkung;
extern unsigned char Parameter_Gyro_P;
extern unsigned char Parameter_Gyro_I;
extern unsigned char Parameter_Gier_P;
extern unsigned char Parameter_ServoNickControl;
 
#endif //_FC_H
 
/DUBwise/misc/pc-komp-ref/header_files/6.h
0,0 → 1,137
/*#######################################################################################
Flight Control
#######################################################################################*/
 
#ifndef _FC_H
#define _FC_H
 
extern volatile unsigned int I2CTimeout;
extern unsigned char Sekunde,Minute;
extern volatile long IntegralNick,IntegralNick2;
extern volatile long IntegralRoll,IntegralRoll2;
extern volatile long Mess_IntegralNick,Mess_IntegralNick2;
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2;
extern volatile long IntegralAccNick,IntegralAccRoll;
extern volatile long Mess_Integral_Hoch;
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2;
extern volatile int KompassValue;
extern volatile int KompassStartwert;
extern volatile int KompassRichtung;
extern int HoehenWert;
extern int SollHoehe;
extern volatile int MesswertNick,MesswertRoll,MesswertGier;
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll;
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch;
extern volatile float NeutralAccZ;
extern long Umschlag180Nick, Umschlag180Roll;
 
void MotorRegler(void);
void SendMotorData(void);
void CalibrierMittelwert(void);
void Mittelwert(void);
void SetNeutral(void);
void Piep(unsigned char Anzahl);
extern void DefaultKonstanten(void);
void DefaultKonstanten1(void);
void DefaultKonstanten2(void);
 
extern unsigned char h,m,s;
extern volatile unsigned char Timeout ;
extern unsigned char CosinusNickWinkel, CosinusRollWinkel;
extern volatile long IntegralNick,IntegralNick2;
extern volatile long IntegralRoll,IntegralRoll2;
extern volatile long Integral_Gier;
extern volatile long Mess_IntegralNick,Mess_IntegralNick2;
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2;
extern volatile long Mess_Integral_Gier;
extern volatile int DiffNick,DiffRoll;
extern int Poti1, Poti2, Poti3, Poti4;
extern volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
extern unsigned char MotorWert[5];
extern volatile unsigned char SenderOkay;
extern int StickNick,StickRoll,StickGier;
extern char MotorenEin;
extern void DefaultKonstanten1(void);
extern void DefaultKonstanten2(void);
 
#define STRUCT_PARAM_LAENGE 65
struct mk_param_struct
{
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv
unsigned char Hoehe_MinGas; // Wert : 0-100
unsigned char Luftdruck_D; // Wert : 0-250
unsigned char MaxHoehe; // Wert : 0-32
unsigned char Hoehe_P; // Wert : 0-32
unsigned char Hoehe_Verstaerkung; // Wert : 0-50
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250
unsigned char Stick_P; // Wert : 1-6
unsigned char Stick_D; // Wert : 0-64
unsigned char Gier_P; // Wert : 1-20
unsigned char Gas_Min; // Wert : 0-32
unsigned char Gas_Max; // Wert : 33-250
unsigned char GyroAccFaktor; // Wert : 1-64
unsigned char KompassWirkung; // Wert : 0-32
unsigned char Gyro_P; // Wert : 10-250
unsigned char Gyro_I; // Wert : 0-250
unsigned char UnterspannungsWarnung; // Wert : 0-250
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen
unsigned char UfoAusrichtung; // X oder + Formation
unsigned char I_Faktor; // Wert : 0-250
unsigned char UserParam1; // Wert : 0-250
unsigned char UserParam2; // Wert : 0-250
unsigned char UserParam3; // Wert : 0-250
unsigned char UserParam4; // Wert : 0-250
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag
unsigned char ServoNickRefresh; //
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag
unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung)
unsigned char AchsGegenKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick Gegenkoppelt (NickRollGegenkopplung)
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung)
unsigned char Driftkomp;
//------------------------------------------------
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen
unsigned char Reserved[4];
char Name[12];
};
 
 
/*
unsigned char ServoNickMax; // Wert : 0-250
unsigned char ServoNickRefresh; //
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag
//------------------------------------------------
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen
unsigned char Reserved[4];
char Name[12];
*/
extern struct mk_param_struct EE_Parameter;
 
extern unsigned char Parameter_Luftdruck_D;
extern unsigned char Parameter_MaxHoehe;
extern unsigned char Parameter_Hoehe_P;
extern unsigned char Parameter_Hoehe_ACC_Wirkung;
extern unsigned char Parameter_KompassWirkung;
extern unsigned char Parameter_Gyro_P;
extern unsigned char Parameter_Gyro_I;
extern unsigned char Parameter_Gier_P;
extern unsigned char Parameter_ServoNickControl;
extern unsigned char Parameter_AchsKopplung1;
extern unsigned char Parameter_AchsGegenKopplung1;
 
 
#endif //_FC_H
 
/DUBwise/misc/pc-komp-ref/header_files/7.h
0,0 → 1,144
/*#######################################################################################
Flight Control
#######################################################################################*/
 
#ifndef _FC_H
#define _FC_H
 
extern volatile unsigned int I2CTimeout;
extern unsigned char Sekunde,Minute;
extern volatile long IntegralNick,IntegralNick2;
extern volatile long IntegralRoll,IntegralRoll2;
extern volatile long Mess_IntegralNick,Mess_IntegralNick2;
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2;
extern volatile long IntegralAccNick,IntegralAccRoll;
extern volatile long Mess_Integral_Hoch;
extern volatile long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2;
extern volatile int KompassValue;
extern volatile int KompassStartwert;
extern volatile int KompassRichtung;
extern int HoehenWert;
extern int SollHoehe;
extern volatile int MesswertNick,MesswertRoll,MesswertGier;
extern volatile int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll;
extern volatile int NeutralAccX, NeutralAccY,Mittelwert_AccHoch;
extern volatile float NeutralAccZ;
extern long Umschlag180Nick, Umschlag180Roll;
extern signed int ExternStickNick,ExternStickRoll,ExternStickGier;
extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8;
 
void MotorRegler(void);
void SendMotorData(void);
void CalibrierMittelwert(void);
void Mittelwert(void);
void SetNeutral(void);
void Piep(unsigned char Anzahl);
extern void DefaultKonstanten(void);
void DefaultKonstanten1(void);
void DefaultKonstanten2(void);
 
extern unsigned char h,m,s;
extern volatile unsigned char Timeout ;
extern unsigned char CosinusNickWinkel, CosinusRollWinkel;
extern volatile long IntegralNick,IntegralNick2;
extern volatile long IntegralRoll,IntegralRoll2;
extern volatile long Integral_Gier;
extern volatile long Mess_IntegralNick,Mess_IntegralNick2;
extern volatile long Mess_IntegralRoll,Mess_IntegralRoll2;
extern volatile long Mess_Integral_Gier;
extern volatile int DiffNick,DiffRoll;
extern int Poti1, Poti2, Poti3, Poti4;
extern volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
extern unsigned char MotorWert[5];
extern volatile unsigned char SenderOkay;
extern int StickNick,StickRoll,StickGier;
extern char MotorenEin;
extern void DefaultKonstanten1(void);
extern void DefaultKonstanten2(void);
 
#define STRUCT_PARAM_LAENGE 71
struct mk_param_struct
{
unsigned char Kanalbelegung[8]; // GAS[0], GIER[1],NICK[2], ROLL[3], POTI1, POTI2, POTI3
unsigned char GlobalConfig; // 0x01=Höhenregler aktiv,0x02=Kompass aktiv, 0x04=GPS aktiv, 0x08=Heading Hold aktiv
unsigned char Hoehe_MinGas; // Wert : 0-100
unsigned char Luftdruck_D; // Wert : 0-250
unsigned char MaxHoehe; // Wert : 0-32
unsigned char Hoehe_P; // Wert : 0-32
unsigned char Hoehe_Verstaerkung; // Wert : 0-50
unsigned char Hoehe_ACC_Wirkung; // Wert : 0-250
unsigned char Stick_P; // Wert : 1-6
unsigned char Stick_D; // Wert : 0-64
unsigned char Gier_P; // Wert : 1-20
unsigned char Gas_Min; // Wert : 0-32
unsigned char Gas_Max; // Wert : 33-250
unsigned char GyroAccFaktor; // Wert : 1-64
unsigned char KompassWirkung; // Wert : 0-32
unsigned char Gyro_P; // Wert : 10-250
unsigned char Gyro_I; // Wert : 0-250
unsigned char UnterspannungsWarnung; // Wert : 0-250
unsigned char NotGas; // Wert : 0-250 //Gaswert bei Empängsverlust
unsigned char NotGasZeit; // Wert : 0-250 // Zeitbis auf NotGas geschaltet wird, wg. Rx-Problemen
unsigned char UfoAusrichtung; // X oder + Formation
unsigned char I_Faktor; // Wert : 0-250
unsigned char UserParam1; // Wert : 0-250
unsigned char UserParam2; // Wert : 0-250
unsigned char UserParam3; // Wert : 0-250
unsigned char UserParam4; // Wert : 0-250
unsigned char ServoNickControl; // Wert : 0-250 // Stellung des Servos
unsigned char ServoNickComp; // Wert : 0-250 // Einfluss Gyro/Servo
unsigned char ServoNickMin; // Wert : 0-250 // Anschlag
unsigned char ServoNickMax; // Wert : 0-250 // Anschlag
unsigned char ServoNickRefresh; //
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag
unsigned char LoopHysterese; // Wert: 0-250 Hysterese für Stickausschlag
unsigned char AchsKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung)
unsigned char AchsGegenKopplung1; // Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick Gegenkoppelt (NickRollGegenkopplung)
unsigned char WinkelUmschlagNick; // Wert: 0-250 180°-Punkt
unsigned char WinkelUmschlagRoll; // Wert: 0-250 180°-Punkt
unsigned char GyroAccAbgleich; // 1/k (Koppel_ACC_Wirkung)
unsigned char Driftkomp;
unsigned char DynamicStability;
unsigned char UserParam5; // Wert : 0-250
unsigned char UserParam6; // Wert : 0-250
unsigned char UserParam7; // Wert : 0-250
unsigned char UserParam8; // Wert : 0-250
 
//------------------------------------------------
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen
unsigned char Reserved[4];
char Name[12];
};
 
 
/*
unsigned char ServoNickMax; // Wert : 0-250
unsigned char ServoNickRefresh; //
unsigned char LoopGasLimit; // Wert: 0-250 max. Gas während Looping
unsigned char LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag
//------------------------------------------------
unsigned char LoopConfig; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoNickCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen
unsigned char Reserved[4];
char Name[12];
*/
extern struct mk_param_struct EE_Parameter;
 
extern unsigned char Parameter_Luftdruck_D;
extern unsigned char Parameter_MaxHoehe;
extern unsigned char Parameter_Hoehe_P;
extern unsigned char Parameter_Hoehe_ACC_Wirkung;
extern unsigned char Parameter_KompassWirkung;
extern unsigned char Parameter_Gyro_P;
extern unsigned char Parameter_Gyro_I;
extern unsigned char Parameter_Gier_P;
extern unsigned char Parameter_ServoNickControl;
extern unsigned char Parameter_AchsKopplung1;
extern unsigned char Parameter_AchsGegenKopplung1;
 
 
#endif //_FC_H