Rev 2248 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2248 | - | 1 | /***************************************************************************************************************************** |
2 | * File: fc.h |
||
3 | * Purpose: header of fc.c |
||
4 | *****************************************************************************************************************************/ |
||
5 | #ifndef _FC_H |
||
6 | #define _FC_H |
||
7 | |||
8 | // ---------------------- definitions ---------------------- |
||
9 | #define STICK_GAIN 4 |
||
10 | |||
11 | #define FLAG_MOTOR_RUN 1 // diese Flags werden |
||
12 | #define FLAG_FLY 2 // bei Bedarf |
||
13 | #define FLAG_CALIBRATE 4 // auf die |
||
14 | #define FLAG_START 8 // Variable |
||
15 | #define FLAG_NOTLANDUNG 16 // "MikroKopterFlags" |
||
16 | #define FLAG_LOWBAT 32 // abgebildet |
||
17 | |||
18 | #define MAX_MOTORS 2 // gesetzt für Waage (max 12 möglich) |
||
19 | #define CHECK_MIN_MAX(wert,min,max) {if(wert < min) wert = min; else if(wert > max) wert = max;} |
||
20 | |||
21 | extern long GIER_GRAD_FAKTOR; // Abhängigkeit zwischen GyroIntegral und Winkel |
||
22 | extern volatile unsigned char MikroKopterFlags; |
||
23 | extern volatile unsigned int I2CTimeout; |
||
24 | extern unsigned char Sekunde,Minute; |
||
25 | extern unsigned int BaroExpandActive; |
||
26 | extern long IntegralNick,IntegralNick2; |
||
27 | extern long IntegralRoll,IntegralRoll2; |
||
28 | |||
29 | extern long Mess_IntegralNick,Mess_IntegralNick2; |
||
30 | extern long Mess_IntegralRoll,Mess_IntegralRoll2; |
||
31 | extern long IntegralAccNick,IntegralAccRoll; |
||
32 | extern volatile long Mess_Integral_Hoch; |
||
33 | extern long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2; |
||
34 | extern int KompassValue; |
||
35 | extern int KompassStartwert; |
||
36 | extern int KompassRichtung; |
||
37 | |||
38 | extern int TrimNick, TrimRoll; |
||
39 | extern long ErsatzKompass; |
||
40 | extern int ErsatzKompassInGrad; // Kompasswert in Grad |
||
41 | extern long HoehenWert; |
||
42 | extern long SollHoehe; |
||
43 | extern int MesswertNick,MesswertRoll,MesswertGier; |
||
44 | extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll; |
||
45 | extern int NeutralAccX, NeutralAccY,Mittelwert_AccHoch; |
||
46 | extern unsigned char HoehenReglerAktiv; |
||
47 | extern volatile float NeutralAccZ; |
||
48 | extern long Umschlag180Nick, Umschlag180Roll; |
||
49 | extern signed int ExternStickNick,ExternStickRoll,ExternStickGier; |
||
50 | |||
51 | extern unsigned char Parameter_UserParam1,Parameter_UserParam2,Parameter_UserParam3,Parameter_UserParam4,Parameter_UserParam5,Parameter_UserParam6,Parameter_UserParam7,Parameter_UserParam8; |
||
52 | extern int NaviAccNick,NaviAccRoll,NaviCntAcc; |
||
53 | extern unsigned int modell_fliegt; |
||
54 | |||
55 | //------------------------- functions --------------- |
||
56 | void MotorRegler(void); |
||
57 | void SendMotorData(void); |
||
58 | void CalibrierMittelwert(void); |
||
59 | void Mittelwert(void); |
||
60 | void SetNeutral(void); |
||
61 | void Piep(unsigned char Anzahl, unsigned int dauer); |
||
62 | |||
63 | extern unsigned char h,m,s; |
||
64 | extern volatile unsigned char Timeout ; |
||
65 | extern unsigned char CosinusNickWinkel, CosinusRollWinkel; |
||
66 | extern int DiffNick,DiffRoll; |
||
67 | extern int Poti1, Poti2, Poti3, Poti4; |
||
68 | extern volatile unsigned char SenderOkay; |
||
69 | extern volatile unsigned char SenderRSSI; |
||
70 | extern unsigned char RequiredMotors; |
||
71 | extern int StickNick,StickRoll,StickGier; |
||
72 | extern char MotorenEin; |
||
73 | |||
74 | extern void DefaultKonstanten1(void); |
||
75 | extern void DefaultKonstanten2(void); |
||
76 | extern void DefaultKonstanten3(void); |
||
77 | extern void DefaultStickMapping(void); |
||
78 | |||
79 | |||
80 | #define STRUCT_PARAM_LAENGE sizeof(EE_Parameter) |
||
81 | |||
82 | struct mk_param_struct |
||
83 | { |
||
84 | unsigned char Kanalbelegung[8]; // 01-08 Nick[0]=3, Roll[1]=2,Gas[2]=1, Gier[3]=4, K_POTI1[4], K_POTI2[5], K_POTI3[6], K_POTI4[7] steht auf EEPROM auf Adresse 80-87 |
||
85 | unsigned char GlobalConfig; // 09 0x80=Rotationrate Limiter, 0x40=ACHSENKOPPLUNG_AKTIV, 0x20=GPS aktiv, 0x10=Orientation fix, 0x08=Kompass_aktiv, 0x04=Heading Hold aktiv, 0x02=?, 0x01=Höhenregler aktiv |
||
86 | unsigned char Hoehe_MinGas; // 10 Wert : 0-100 |
||
87 | unsigned char Luftdruck_D; // 11 Wert : 0-250 |
||
88 | unsigned char MaxHoehe; // 12 Wert : 0-32 |
||
89 | unsigned char Hoehe_P; // 13 Wert : 0-32 |
||
90 | unsigned char Hoehe_Verstaerkung; // 14 Wert : 0-50 |
||
91 | unsigned char Hoehe_ACC_Wirkung; // 15 Wert : 0-250 |
||
92 | unsigned char Hoehe_HoverBand; // 16 Wert : 0-250 |
||
93 | unsigned char Hoehe_GPS_Z; // 17 Wert : 0-250 |
||
94 | unsigned char Hoehe_StickNeutralPoint; // 18 Wert : 0-250 |
||
95 | unsigned char Stick_P; // 19 Wert : 1-6 |
||
96 | unsigned char Stick_D; // 20 Wert : 0-64 |
||
97 | unsigned char Gier_P; // 21 Wert : 1-20 |
||
98 | unsigned char Gas_Min; // 22 Wert : 0-32 |
||
99 | unsigned char Gas_Max; // 23 Wert : 33-250 |
||
100 | unsigned char GyroAccFaktor; // 24 Wert : 1-64 |
||
101 | unsigned char KompassWirkung; // 25 Wert : 0-32 |
||
102 | unsigned char Gyro_P; // 26 Wert : 10-250 |
||
103 | unsigned char Gyro_I; // 27 Wert : 0-250 |
||
104 | unsigned char Gyro_D; // 28 Wert : 0-250 |
||
105 | unsigned char Gyro_Gier_P; // 29 Wert : 10-250 |
||
106 | unsigned char Gyro_Gier_I; // 30 Wert : 0-250 |
||
107 | unsigned char UnterspannungsWarnung; // 31 Wert : 0-250 |
||
108 | unsigned char NotGas; // 32 Wert : 0-250 // Gaswert bei Empangsverlust |
||
109 | unsigned char NotGasZeit; // 33 Wert : 0-250 // Zeit, bis auf NotGas geschaltet wird, wegen Empfänger-Problemen |
||
110 | unsigned char UfoAusrichtung; // 34 X oder + Formation |
||
111 | unsigned char I_Faktor; // 35 Wert : 0-250 |
||
112 | unsigned char UserParam1; // 36 Wert : 0-250 |
||
113 | unsigned char UserParam2; // 37 Wert : 0-250 |
||
114 | unsigned char UserParam3; // 38 Wert : 0-250 |
||
115 | unsigned char UserParam4; // 39 Wert : 0-250 |
||
116 | unsigned char ServoNickControl; // 40 Wert : 0-250 // Stellung des Servos |
||
117 | unsigned char ServoNickComp; // 41 Wert : 0-250 // Einfluss Gyro/Servo |
||
118 | unsigned char ServoNickMin; // 42 Wert : 0-250 // Anschlag |
||
119 | unsigned char ServoNickMax; // 43 Wert : 0-250 // Anschlag |
||
120 | //---------------------------------- // --------------------- Seit V0.75 ------------------------------------- |
||
121 | unsigned char ServoRollControl; // 44 Wert : 0-250 // Stellung des Servos |
||
122 | unsigned char ServoRollComp; // 45 Wert : 0-250 |
||
123 | unsigned char ServoRollMin; // 46 Wert : 0-250 |
||
124 | unsigned char ServoRollMax; // 47 Wert : 0-250 |
||
125 | unsigned char ServoNickRefresh; // 48 |
||
126 | unsigned char LoopGasLimit; // 49 Wert: 0-250 max. Gas während Looping |
||
127 | unsigned char LoopThreshold; // 50 Wert: 0-250 Schwelle für Stickausschlag |
||
128 | unsigned char LoopHysterese; // 51 Wert: 0-250 Hysterese für Stickausschlag |
||
129 | unsigned char AchsKopplung1; // 52 Wert: 0-250 Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung) |
||
130 | unsigned char AchsKopplung2; // 53 Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
||
131 | unsigned char CouplingYawCorrection; // 54 Wert: 0-250 Faktor, mit dem Nick und Roll verkoppelt werden |
||
132 | unsigned char WinkelUmschlagNick; // 55 Wert: 0-250 180°-Punkt // EE_Parameter.WinkelUmschlagNick = 85; // TurnOverNick |
||
133 | unsigned char WinkelUmschlagRoll; // 56 Wert: 0-250 180°-Punkt // EE_Parameter.WinkelUmschlagRoll = 85; // TurnOverRoll |
||
134 | unsigned char GyroAccAbgleich; // 57 1/k (Koppel_ACC_Wirkung) |
||
135 | unsigned char Driftkomp; // 58 |
||
136 | unsigned char DynamicStability; // 59 |
||
137 | unsigned char UserParam5; // 60 Wert : 0-250 |
||
138 | unsigned char UserParam6; // 61 Wert : 0-250 |
||
139 | unsigned char UserParam7; // 62 Wert : 0-250 |
||
140 | unsigned char UserParam8; // 63 Wert : 0-250 |
||
141 | //----------------------------------- // ---------------------- Output ----------------------------------------- |
||
142 | unsigned char J16Bitmask; // 64 for the J16 Output |
||
143 | unsigned char J16Timing; // 65 for the J16 Output |
||
144 | unsigned char J17Bitmask; // 66 for the J17 Output |
||
145 | unsigned char J17Timing; // 67 for the J17 Output |
||
146 | // ---------------------------------- // ---------------------- seit version V0.75c ---------------------------- |
||
147 | unsigned char WARN_J16_Bitmask; // 68 for the J16 Output |
||
148 | unsigned char WARN_J17_Bitmask; // 69 for the J17 Output |
||
149 | //----------------------------------- // ------------NaviCtrl---------------------------------------------------- |
||
150 | unsigned char NaviGpsModeControl; // 70 Parameter für das Naviboard |
||
151 | unsigned char NaviGpsGain; // 71 |
||
152 | unsigned char NaviGpsP; // 72 |
||
153 | unsigned char NaviGpsI; // 73 |
||
154 | unsigned char NaviGpsD; // 74 |
||
155 | unsigned char NaviGpsPLimit; // 75 |
||
156 | unsigned char NaviGpsILimit; // 76 |
||
157 | unsigned char NaviGpsDLimit; // 77 |
||
158 | unsigned char NaviGpsACC; // 78 |
||
159 | unsigned char NaviGpsMinSat; // 79 |
||
160 | unsigned char NaviStickThreshold; // 80 |
||
161 | unsigned char NaviWindCorrection; // 81 |
||
162 | unsigned char NaviSpeedCompensation; // 82 |
||
163 | unsigned char NaviOperatingRadius; // 83 |
||
164 | unsigned char NaviAngleLimitation; // 84 |
||
165 | unsigned char NaviPH_LoginTime; // 85 |
||
166 | //---------------------------------- // ---Ext.Ctrl------------- |
||
167 | unsigned char ExternalControl; // 86 for serial Control |
||
168 | unsigned char BitConfig; // 87 (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
||
169 | unsigned char ServoCompInvert; // 88 0x01 = Nick, 0x02 = Roll 0 oder 1 // WICHTIG!!! am Ende lassen |
||
170 | unsigned char ExtraConfig; // 89 bitcodiert |
||
171 | char Name[12]; // 90-101 |
||
172 | }; |
||
173 | //-------------------------------------------------------------------------------------------------------------------------------------------------- |
||
174 | extern struct mk_param_struct EE_Parameter; // ist in fc.c Zeile 112 deklariert worden |
||
175 | //-------------------------------------------------------------------------------------------------------------------------------------------------- |
||
176 | |||
177 | |||
178 | |||
179 | //---------------------------------------------------------------------------------------------------------------------- |
||
180 | struct |
||
181 | { |
||
182 | char Revision; // 1 |
||
183 | char Name[12]; // 2-13 siehe main.c Zeile 229 memcpy(Mixer.Name, "Quadro\0", 11); |
||
184 | signed char Motor[16][4]; // 14-77 für jeden Motor gibt es einen 4er Datensatz |
||
185 | } Mixer; |
||
186 | //---------------------------------------------------------------------------------------------------------------------- |
||
187 | |||
188 | |||
189 | |||
190 | |||
191 | extern unsigned char Parameter_Luftdruck_D; |
||
192 | extern unsigned char Parameter_MaxHoehe; |
||
193 | extern unsigned char Parameter_Hoehe_P; |
||
194 | extern unsigned char Parameter_Hoehe_ACC_Wirkung; |
||
195 | extern unsigned char Parameter_KompassWirkung; |
||
196 | extern unsigned char Parameter_Gyro_P; |
||
197 | extern unsigned char Parameter_Gyro_I; |
||
198 | extern unsigned char Parameter_Gier_P; |
||
199 | extern unsigned char Parameter_ServoNickControl; |
||
200 | extern unsigned char Parameter_ServoRollControl; |
||
201 | extern unsigned char Parameter_AchsKopplung1; |
||
202 | extern unsigned char Parameter_AchsKopplung2; |
||
203 | |||
204 | extern unsigned char Parameter_J16Bitmask; // for the J16 Output |
||
205 | extern unsigned char Parameter_J16Timing; // for the J16 Output |
||
206 | extern unsigned char Parameter_J17Bitmask; // for the J17 Output |
||
207 | extern unsigned char Parameter_J17Timing; // for the J17 Output |
||
208 | extern signed char MixerTable[MAX_MOTORS][4]; |
||
209 | extern unsigned char Motor[MAX_MOTORS]; |
||
210 | |||
211 | #endif |
||
212 | // *** EOF: _FC_H ******************************************************************************************************************** |