Subversion Repositories FlightCtrl

Rev

Rev 1910 | Rev 1927 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1910 - 1
#ifndef _CONFIGURATION_H
2
#define _CONFIGURATION_H
3
 
4
#include <inttypes.h>
5
#include <avr/io.h>
6
 
7
typedef struct {
8
  /*PMM*/uint8_t HeightD;
9
  /* P */uint8_t MaxHeight;
10
  /*PMM*/uint8_t HeightP;
11
  /* P */uint8_t Height_ACC_Effect;
12
  /* P */uint8_t CompassYawEffect;
13
  /* P */uint8_t unnused;
14
 
15
  /* P */uint8_t GyroPitchP;
16
  /* P */uint8_t GyroRollP;
17
  /* P */uint8_t GyroYawP;
18
 
19
  /* P */uint8_t UserParams[8];
20
  /* P */uint8_t ServoPitchControl;
21
 
22
  /* P */uint8_t GyroPitchD;  // LoopGasLimit in tool
23
  /* P */uint8_t GyroRollD;   // AxisCoupling1 in tool
24
  /* P */uint8_t GyroYawD;    // AxisCoupling2 in tool
25
 
26
  /* P */uint8_t AxisCouplingYawCorrection;
27
  /* P */uint8_t DynamicStability;
28
  /* P */uint8_t ExternalControl;
29
  /*PMM*/uint8_t J16Timing;
30
  /*PMM*/uint8_t J17Timing;
31
  /* P */uint8_t NaviGpsModeControl;
32
  /* P */uint8_t NaviGpsGain;
33
  /* P */uint8_t NaviGpsP;
34
  /* P */uint8_t NaviGpsI;
35
  /* P */uint8_t NaviGpsD;
36
  /* P */uint8_t NaviGpsACC;
37
  /*PMM*/uint8_t NaviOperatingRadius;
38
  /* P */uint8_t NaviWindCorrection;
39
  /* P */uint8_t NaviSpeedCompensation;
40
  int8_t KalmanK;
41
  int8_t KalmanMaxDrift;
42
  int8_t KalmanMaxFusion;
43
} dynamicParam_t;
44
extern dynamicParam_t dynamicParams;
45
 
46
typedef struct {
47
  uint8_t sourceIdx, targetIdx;
48
  uint8_t min, max;
49
} MMXLATION;
50
 
51
typedef struct {
52
  uint8_t sourceIdx, targetIdx;
53
} XLATION;
54
 
55
// values above 250 representing poti1 to poti4
56
typedef struct {
57
  uint8_t ChannelAssignment[8]; // see upper defines for details
58
  uint8_t GlobalConfig; // see upper defines for bitcoding
59
  uint8_t HeightMinGas; // Value : 0-100
60
  uint8_t HeightD; // Value : 0-250
61
  uint8_t MaxHeight; // Value : 0-32
62
  uint8_t HeightP; // Value : 0-32
63
  uint8_t Height_Gain; // Value : 0-50
64
  uint8_t Height_ACC_Effect; // Value : 0-250
65
 
66
  uint8_t StickElevatorP; // StickP in tool.
67
  uint8_t StickAileronsP;  // StickD in tool.
68
  uint8_t StickRudderP;   // StickYawP in tool.
69
 
70
  uint8_t GyroAccFactor; // Value : 1-64
71
  uint8_t CompassYawEffect; // Value : 0-32
72
 
73
  uint8_t GyroPitchP;  // GyroP in tool
74
  uint8_t GyroRollP;   // GyroI in tool
75
  uint8_t GyroYawP;    // GyroD in tool
76
 
1926 - 77
  uint8_t UserParams[8]; // Value : 0-250
78
 
1910 - 79
  uint8_t LowVoltageWarning; // Value : 0-250
80
 
81
  uint8_t ControlSigns;
82
  uint8_t ServoRefresh; // Value: 0-250      // Refreshrate of servo pwm output
83
 
84
  uint8_t GyroPitchD; // LoopGasLimit in tool
85
  uint8_t GyroRollD;  // loopThreshold in tool
86
  uint8_t GyroYawD;   // loopHysteresis in tool
87
 
88
  uint8_t GyroAccTrim; // 1/k  (Koppel_ACC_Wirkung)
89
  uint8_t DriftComp; // limit for gyrodrift compensation
90
 
91
  uint8_t J16Bitmask; // for the J16 Output
92
  uint8_t J16Timing; // for the J16 Output
93
  uint8_t J17Bitmask; // for the J17 Output
94
  uint8_t J17Timing; // for the J17 Output
1926 - 95
 
1910 - 96
  uint8_t ExternalControl; // for serial Control
97
  uint8_t BitConfig; // see upper defines for bitcoding
1926 - 98
 
1910 - 99
  uint8_t Reserved[4];
100
} paramset_t;
101
 
102
#define  PARAMSET_STRUCT_LEN  sizeof(paramset_t)
103
 
104
extern paramset_t staticParams;
105
 
106
typedef struct {
107
  uint8_t Revision;
108
  int8_t Name[12];
109
  int8_t Motor[16][4];
110
}__attribute__((packed)) MixerTable_t;
111
 
112
extern MixerTable_t Mixer;
113
 
114
// MKFlags
115
#define MKFLAG_MOTOR_RUN        (1<<0)
116
#define MKFLAG_FLY              (1<<1)
117
#define MKFLAG_CALIBRATE        (1<<2)
118
#define MKFLAG_START            (1<<3)
119
#define MKFLAG_EMERGENCY_LANDING (1<<4)
120
#define MKFLAG_RESERVE1         (1<<5)
121
#define MKFLAG_RESERVE2         (1<<6)
122
#define MKFLAG_RESERVE3         (1<<7)
123
 
124
// bit mask for staticParams.GlobalConfig
125
#define CFG_HEIGHT_CONTROL      (1<<0)
126
#define CFG_HEIGHT_SWITCH       (1<<1)
127
#define CFG_HEADING_HOLD        (1<<2)
128
#define CFG_COMPASS_ACTIVE      (1<<3)
129
#define CFG_COMPASS_FIX         (1<<4)
130
#define CFG_GPS_ACTIVE          (1<<5)
131
#define CFG_AXIS_COUPLING_ACTIVE (1<<6)
132
#define CFG_ROTARY_RATE_LIMITER (1<<7)
133
 
134
// bit mask for staticParams.BitConfig
135
#define CFG_LOOP_UP                 (1<<0)
136
#define CFG_LOOP_DOWN           (1<<1)
137
#define CFG_LOOP_LEFT           (1<<2)
138
#define CFG_LOOP_RIGHT          (1<<3)
139
#define CFG_HEIGHT_3SWITCH      (1<<4)
140
 
141
#define ATMEGA644       0
142
#define ATMEGA644P      1
143
#define SYSCLK F_CPU
144
 
145
// Not really a part of configuration, but LEDs and HW version test are the same.
146
#define RED_OFF   {if((BoardRelease == 10) || (BoardRelease == 20)) PORTB &=~(1<<PORTB0); else  PORTB |= (1<<PORTB0);}
147
#define RED_ON    {if((BoardRelease == 10) || (BoardRelease == 20)) PORTB |= (1<<PORTB0); else  PORTB &=~(1<<PORTB0);}
148
#define RED_FLASH PORTB ^= (1<<PORTB0)
149
#define GRN_OFF   {if(BoardRelease  < 12) PORTB &=~(1<<PORTB1); else PORTB |= (1<<PORTB1);}
150
#define GRN_ON    {if(BoardRelease  < 12) PORTB |= (1<<PORTB1); else PORTB &=~(1<<PORTB1);}
151
#define GRN_FLASH PORTB ^= (1<<PORTB1)
152
 
153
// Mixer table
154
#define MIX_THROTTLE    0
155
#define MIX_PITCH       1
156
#define MIX_ROLL        2
157
#define MIX_YAW         3
158
 
159
extern volatile uint8_t MKFlags;
160
extern int16_t variables[8]; // The "Poti"s.
161
extern uint8_t BoardRelease;
162
extern uint8_t CPUType;
163
 
164
void configuration_staticToDynamic(void);
165
uint8_t getCPUType(void);
166
uint8_t getBoardRelease(void);
167
 
168
#endif // _CONFIGURATION_H