Subversion Repositories FlightCtrl

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

/*****************************************************************************************************************************
* File:                 fc.h
* Purpose:              header of fc.c
*****************************************************************************************************************************/

#ifndef _FC_H
 #define _FC_H

// ---------------------- definitions ----------------------
#define STICK_GAIN 4

#define FLAG_MOTOR_RUN  1       // diese Flags werden
#define FLAG_FLY        2       // bei Bedarf
#define FLAG_CALIBRATE  4       // auf die  
#define FLAG_START      8       // Variable
#define FLAG_NOTLANDUNG 16      // "MikroKopterFlags"
#define FLAG_LOWBAT             32      // abgebildet

#define MAX_MOTORS      2       // gesetzt für Waage (max 12 möglich)
#define CHECK_MIN_MAX(wert,min,max) {if(wert < min) wert = min; else if(wert > max) wert = max;}

extern long GIER_GRAD_FAKTOR;                                                                                   // Abhängigkeit zwischen GyroIntegral und Winkel
extern volatile unsigned char MikroKopterFlags;
extern volatile unsigned int I2CTimeout;
extern unsigned char Sekunde,Minute;
extern unsigned int BaroExpandActive;
extern long IntegralNick,IntegralNick2;
extern long IntegralRoll,IntegralRoll2;

extern long Mess_IntegralNick,Mess_IntegralNick2;
extern long Mess_IntegralRoll,Mess_IntegralRoll2;
extern long IntegralAccNick,IntegralAccRoll;
extern volatile long Mess_Integral_Hoch;
extern long Integral_Gier,Mess_Integral_Gier,Mess_Integral_Gier2;
extern int  KompassValue;
extern int  KompassStartwert;
extern int  KompassRichtung;

extern int  TrimNick, TrimRoll;
extern long  ErsatzKompass;
extern int   ErsatzKompassInGrad;                                                                               // Kompasswert in Grad
extern long HoehenWert;
extern long SollHoehe;
extern int MesswertNick,MesswertRoll,MesswertGier;
extern int AdNeutralNick,AdNeutralRoll,AdNeutralGier, Mittelwert_AccNick, Mittelwert_AccRoll;
extern int NeutralAccX, NeutralAccY,Mittelwert_AccHoch;
extern unsigned char HoehenReglerAktiv;
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;
extern int NaviAccNick,NaviAccRoll,NaviCntAcc;
extern unsigned int modell_fliegt;

//------------------------- functions ---------------
void MotorRegler(void);
void SendMotorData(void);
void CalibrierMittelwert(void);
void Mittelwert(void);
void SetNeutral(void);
void Piep(unsigned char Anzahl, unsigned int dauer);

extern unsigned char h,m,s;
extern volatile unsigned char Timeout ;
extern unsigned char CosinusNickWinkel, CosinusRollWinkel;
extern int  DiffNick,DiffRoll;
extern int  Poti1, Poti2, Poti3, Poti4;
extern volatile unsigned char SenderOkay;
extern volatile unsigned char SenderRSSI;
extern unsigned char RequiredMotors;
extern int StickNick,StickRoll,StickGier;
extern char MotorenEin;

extern void DefaultKonstanten1(void);
extern void DefaultKonstanten2(void);
extern void DefaultKonstanten3(void);
extern void DefaultStickMapping(void);


#define  STRUCT_PARAM_LAENGE  sizeof(EE_Parameter)

struct mk_param_struct
{
        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
        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
        unsigned char Hoehe_MinGas;             // 10 Wert : 0-100
        unsigned char Luftdruck_D;              // 11 Wert : 0-250
        unsigned char MaxHoehe;                 // 12 Wert : 0-32
        unsigned char Hoehe_P;                  // 13 Wert : 0-32
        unsigned char Hoehe_Verstaerkung;       // 14 Wert : 0-50
        unsigned char Hoehe_ACC_Wirkung;        // 15 Wert : 0-250
        unsigned char Hoehe_HoverBand;          // 16 Wert : 0-250
        unsigned char Hoehe_GPS_Z;              // 17 Wert : 0-250
        unsigned char Hoehe_StickNeutralPoint;  // 18 Wert : 0-250
        unsigned char Stick_P;                  // 19 Wert : 1-6
        unsigned char Stick_D;                  // 20 Wert : 0-64
        unsigned char Gier_P;                   // 21 Wert : 1-20
        unsigned char Gas_Min;                  // 22 Wert : 0-32
        unsigned char Gas_Max;                  // 23 Wert : 33-250
        unsigned char GyroAccFaktor;            // 24 Wert : 1-64
        unsigned char KompassWirkung;           // 25 Wert : 0-32
        unsigned char Gyro_P;                   // 26 Wert : 10-250
        unsigned char Gyro_I;                   // 27 Wert : 0-250
        unsigned char Gyro_D;                   // 28 Wert : 0-250
        unsigned char Gyro_Gier_P;                      // 29 Wert : 10-250
        unsigned char Gyro_Gier_I;                              // 30 Wert : 0-250
        unsigned char UnterspannungsWarnung;    // 31 Wert : 0-250
        unsigned char NotGas;                   // 32 Wert : 0-250                      // Gaswert bei Empangsverlust
        unsigned char NotGasZeit;               // 33 Wert : 0-250                      // Zeit, bis auf NotGas geschaltet wird, wegen Empfänger-Problemen
        unsigned char UfoAusrichtung;           // 34 X oder + Formation
        unsigned char I_Faktor;                 // 35 Wert : 0-250
        unsigned char UserParam1;               // 36 Wert : 0-250
        unsigned char UserParam2;               // 37 Wert : 0-250
        unsigned char UserParam3;               // 38 Wert : 0-250
        unsigned char UserParam4;               // 39 Wert : 0-250
        unsigned char ServoNickControl;         // 40 Wert : 0-250                      // Stellung des Servos
        unsigned char ServoNickComp;            // 41 Wert : 0-250                      // Einfluss Gyro/Servo
        unsigned char ServoNickMin;             // 42 Wert : 0-250                      // Anschlag
        unsigned char ServoNickMax;             // 43 Wert : 0-250                      // Anschlag
        //----------------------------------    // --------------------- Seit V0.75 -------------------------------------
        unsigned char ServoRollControl;         // 44 Wert : 0-250                      // Stellung des Servos
        unsigned char ServoRollComp;            // 45 Wert : 0-250
        unsigned char ServoRollMin;             // 46 Wert : 0-250
        unsigned char ServoRollMax;             // 47 Wert : 0-250
        unsigned char ServoNickRefresh;         // 48
        unsigned char LoopGasLimit;             // 49 Wert: 0-250  max. Gas während Looping
        unsigned char LoopThreshold;            // 50 Wert: 0-250  Schwelle für Stickausschlag
        unsigned char LoopHysterese;            // 51 Wert: 0-250  Hysterese für Stickausschlag
        unsigned char AchsKopplung1;            // 52 Wert: 0-250  Faktor, mit dem Gier die Achsen Roll und Nick koppelt (NickRollMitkopplung)
        unsigned char AchsKopplung2;            // 53 Wert: 0-250  Faktor, mit dem Nick und Roll verkoppelt werden
        unsigned char CouplingYawCorrection;    // 54 Wert: 0-250  Faktor, mit dem Nick und Roll verkoppelt werden
        unsigned char WinkelUmschlagNick;       // 55 Wert: 0-250  180°-Punkt           // EE_Parameter.WinkelUmschlagNick = 85; // TurnOverNick
        unsigned char WinkelUmschlagRoll;       // 56 Wert: 0-250  180°-Punkt           // EE_Parameter.WinkelUmschlagRoll = 85; // TurnOverRoll
        unsigned char GyroAccAbgleich;          // 57 1/k  (Koppel_ACC_Wirkung)
        unsigned char Driftkomp;                                // 58
        unsigned char DynamicStability;                 // 59
        unsigned char UserParam5;               // 60 Wert : 0-250
        unsigned char UserParam6;               // 61 Wert : 0-250
        unsigned char UserParam7;               // 62 Wert : 0-250
        unsigned char UserParam8;               // 63 Wert : 0-250
        //-----------------------------------   // ---------------------- Output -----------------------------------------
        unsigned char J16Bitmask;               // 64 for the J16 Output
        unsigned char J16Timing;                // 65 for the J16 Output
        unsigned char J17Bitmask;               // 66 for the J17 Output
        unsigned char J17Timing;                // 67 for the J17 Output
        // ----------------------------------   // ---------------------- seit version V0.75c ----------------------------
        unsigned char WARN_J16_Bitmask;         // 68 for the J16 Output
        unsigned char WARN_J17_Bitmask;         // 69 for the J17 Output
        //-----------------------------------   // ------------NaviCtrl----------------------------------------------------
        unsigned char NaviGpsModeControl;       // 70 Parameter für das Naviboard
        unsigned char NaviGpsGain;                              // 71
        unsigned char NaviGpsP;                                 // 72
        unsigned char NaviGpsI;                                 // 73
        unsigned char NaviGpsD;                                 // 74
        unsigned char NaviGpsPLimit;                    // 75
        unsigned char NaviGpsILimit;                    // 76
        unsigned char NaviGpsDLimit;                    // 77
        unsigned char NaviGpsACC;                               // 78
        unsigned char NaviGpsMinSat;                    // 79
        unsigned char NaviStickThreshold;               // 80
        unsigned char NaviWindCorrection;               // 81
        unsigned char NaviSpeedCompensation;    // 82
        unsigned char NaviOperatingRadius;              // 83
        unsigned char NaviAngleLimitation;              // 84
        unsigned char NaviPH_LoginTime;                 // 85
        //----------------------------------    // ---Ext.Ctrl-------------
        unsigned char ExternalControl;          // 86 for serial Control
        unsigned char BitConfig;                        // 87 (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
        unsigned char ServoCompInvert;                  // 88 0x01 = Nick, 0x02 = Roll   0 oder 1  // WICHTIG!!! am Ende lassen
        unsigned char ExtraConfig;                      // 89 bitcodiert
        char Name[12];                                                  // 90-101
};
//--------------------------------------------------------------------------------------------------------------------------------------------------
extern struct mk_param_struct EE_Parameter;             // ist in fc.c Zeile 112 deklariert worden
//--------------------------------------------------------------------------------------------------------------------------------------------------



//----------------------------------------------------------------------------------------------------------------------
struct
{
    char Revision;                                                      // 1
    char Name[12];                                                      // 2-13         siehe main.c Zeile 229          memcpy(Mixer.Name, "Quadro\0", 11);
    signed char Motor[16][4];                           // 14-77        für jeden Motor gibt es einen 4er Datensatz
} Mixer;
//----------------------------------------------------------------------------------------------------------------------




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_ServoRollControl;
extern unsigned char Parameter_AchsKopplung1;
extern unsigned char Parameter_AchsKopplung2;

extern unsigned char Parameter_J16Bitmask;             // for the J16 Output
extern unsigned char Parameter_J16Timing;              // for the J16 Output
extern unsigned char Parameter_J17Bitmask;             // for the J17 Output
extern unsigned char Parameter_J17Timing;              // for the J17 Output
extern signed char MixerTable[MAX_MOTORS][4];
extern unsigned char Motor[MAX_MOTORS];

#endif
// *** EOF: _FC_H ********************************************************************************************************************