Rev 935 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 935 | Rev 936 | ||
---|---|---|---|
1 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
2 | // + Konstanten |
2 | // + Konstanten |
3 | // + 0-250 -> normale Werte |
3 | // + 0-250 -> normale Werte |
4 | // + 251 -> Poti1 |
4 | // + 251 -> Poti1 |
5 | // + 252 -> Poti2 |
5 | // + 252 -> Poti2 |
6 | // + 253 -> Poti3 |
6 | // + 253 -> Poti3 |
7 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
7 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
8 | 8 | ||
9 | #ifndef EEMEM |
9 | #ifndef EEMEM |
10 | #define EEMEM __attribute__ ((section (".eeprom"))) |
10 | #define EEMEM __attribute__ ((section (".eeprom"))) |
11 | #endif |
11 | #endif |
12 | 12 | ||
13 | 13 | ||
14 | #include <avr/eeprom.h> |
14 | #include <avr/eeprom.h> |
15 | #include <string.h> |
15 | #include <string.h> |
16 | #include "eeprom.h" |
16 | #include "eeprom.h" |
17 | #include "printf_P.h" |
17 | #include "printf_P.h" |
- | 18 | #include "led.h" |
|
18 | 19 | ||
19 | 20 | ||
20 | // byte array in eeprom |
21 | // byte array in eeprom |
21 | uint8_t EEPromArray[E2END+1] EEMEM; |
22 | uint8_t EEPromArray[E2END+1] EEMEM; |
22 | 23 | ||
23 | paramset_t ParamSet; |
24 | paramset_t ParamSet; |
24 | 25 | ||
25 | 26 | ||
26 | 27 | ||
27 | /***************************************************/ |
28 | /***************************************************/ |
28 | /* Default Values for parameter set 1 */ |
29 | /* Default Values for parameter set 1 */ |
29 | /***************************************************/ |
30 | /***************************************************/ |
30 | void ParamSet_DefaultSet1(void) // sport |
31 | void ParamSet_DefaultSet1(void) // sport |
31 | { |
32 | { |
32 | ParamSet.ChannelAssignment[CH_NICK] = 1; |
33 | ParamSet.ChannelAssignment[CH_NICK] = 1; |
33 | ParamSet.ChannelAssignment[CH_ROLL] = 2; |
34 | ParamSet.ChannelAssignment[CH_ROLL] = 2; |
34 | ParamSet.ChannelAssignment[CH_GAS] = 3; |
35 | ParamSet.ChannelAssignment[CH_GAS] = 3; |
35 | ParamSet.ChannelAssignment[CH_YAW] = 4; |
36 | ParamSet.ChannelAssignment[CH_YAW] = 4; |
36 | ParamSet.ChannelAssignment[CH_POTI1] = 5; |
37 | ParamSet.ChannelAssignment[CH_POTI1] = 5; |
37 | ParamSet.ChannelAssignment[CH_POTI2] = 6; |
38 | ParamSet.ChannelAssignment[CH_POTI2] = 6; |
38 | ParamSet.ChannelAssignment[CH_POTI3] = 7; |
39 | ParamSet.ChannelAssignment[CH_POTI3] = 7; |
39 | ParamSet.ChannelAssignment[CH_POTI4] = 8; |
40 | ParamSet.ChannelAssignment[CH_POTI4] = 8; |
40 | ParamSet.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE | CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX;//0x01; |
41 | ParamSet.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE | CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX; |
41 | ParamSet.Height_MinGas = 30; |
42 | ParamSet.Height_MinGas = 30; |
42 | ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1 |
43 | ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1 |
43 | ParamSet.Height_P = 10; // Wert : 0-32 |
44 | ParamSet.Height_P = 10; // Wert : 0-32 |
44 | ParamSet.Height_D = 30; // Wert : 0-250 |
45 | ParamSet.Height_D = 30; // Wert : 0-250 |
45 | ParamSet.Height_ACC_Effect = 30; // Wert : 0-250 |
46 | ParamSet.Height_ACC_Effect = 30; // Wert : 0-250 |
46 | ParamSet.Height_Gain = 4; // Wert : 0-50 |
47 | ParamSet.Height_Gain = 4; // Wert : 0-50 |
47 | ParamSet.Stick_P = 15; // Wert : 1-24 |
48 | ParamSet.Stick_P = 15; // Wert : 1-24 |
48 | ParamSet.Stick_D = 30; // Wert : 0-250 |
49 | ParamSet.Stick_D = 30; // Wert : 0-250 |
49 | ParamSet.Yaw_P = 12; // Wert : 1-20 |
50 | ParamSet.Yaw_P = 12; // Wert : 1-20 |
50 | ParamSet.Gas_Min = 8; // Wert : 0-32 |
51 | ParamSet.Gas_Min = 8; // Wert : 0-32 |
51 | ParamSet.Gas_Max = 230; // Wert : 33-250 |
52 | ParamSet.Gas_Max = 230; // Wert : 33-250 |
52 | ParamSet.GyroAccFactor = 30; // Wert : 1-64 |
53 | ParamSet.GyroAccFactor = 30; // Wert : 1-64 |
53 | ParamSet.CompassYawEffect = 128; // Wert : 0-250 |
54 | ParamSet.CompassYawEffect = 128; // Wert : 0-250 |
54 | ParamSet.Gyro_P = 80; // Wert : 0-250 |
55 | ParamSet.Gyro_P = 80; // Wert : 0-250 |
55 | ParamSet.Gyro_I = 150; // Wert : 0-250 |
56 | ParamSet.Gyro_I = 150; // Wert : 0-250 |
56 | ParamSet.LowVoltageWarning = 94; // Wert : 0-250 |
57 | ParamSet.LowVoltageWarning = 94; // Wert : 0-250 |
57 | ParamSet.EmergencyGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
58 | ParamSet.EmergencyGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
58 | ParamSet.EmergencyGasDuration = 30; // Wert : 0-250 // Zeit bis auf EmergencyGas geschaltet wird, wg. Rx-Problemen |
59 | ParamSet.EmergencyGasDuration = 30; // Wert : 0-250 // Zeit bis auf EmergencyGas geschaltet wird, wg. Rx-Problemen |
59 | ParamSet.UfoArrangement = 0; // X oder + Formation |
60 | ParamSet.UfoArrangement = 0; // X oder + Formation |
60 | ParamSet.I_Factor = 32; |
61 | ParamSet.I_Factor = 32; |
61 | ParamSet.UserParam1 = 253; //zur freien Verwendung |
62 | ParamSet.UserParam1 = 0; //zur freien Verwendung |
62 | ParamSet.UserParam2 = 100; //zur freien Verwendung |
63 | ParamSet.UserParam2 = 0; //zur freien Verwendung |
63 | ParamSet.UserParam3 = 90; //zur freien Verwendung |
64 | ParamSet.UserParam3 = 0; //zur freien Verwendung |
64 | ParamSet.UserParam4 = 90; //zur freien Verwendung |
65 | ParamSet.UserParam4 = 0; //zur freien Verwendung |
65 | ParamSet.UserParam5 = 90; // zur freien Verwendung |
66 | ParamSet.UserParam5 = 0; // zur freien Verwendung |
66 | ParamSet.UserParam6 = 90; // zur freien Verwendung |
67 | ParamSet.UserParam6 = 0; // zur freien Verwendung |
67 | ParamSet.UserParam7 = 0; // zur freien Verwendung |
68 | ParamSet.UserParam7 = 0; // zur freien Verwendung |
68 | ParamSet.UserParam8 = 0; // zur freien Verwendung |
69 | ParamSet.UserParam8 = 0; // zur freien Verwendung |
69 | ParamSet.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
70 | ParamSet.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
70 | ParamSet.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
71 | ParamSet.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
71 | ParamSet.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
72 | ParamSet.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
72 | ParamSet.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
73 | ParamSet.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
73 | ParamSet.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
74 | ParamSet.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
74 | ParamSet.ServoNickRefresh = 5; |
75 | ParamSet.ServoNickRefresh = 5; |
75 | ParamSet.LoopGasLimit = 50; |
76 | ParamSet.LoopGasLimit = 50; |
76 | ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
77 | ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
77 | ParamSet.LoopHysteresis = 50; |
78 | ParamSet.LoopHysteresis = 50; |
78 | ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
79 | ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt |
79 | ParamSet.Yaw_PosFeedback = 90; |
80 | ParamSet.Yaw_PosFeedback = 90; |
80 | ParamSet.Yaw_NegFeedback = 5; |
81 | ParamSet.Yaw_NegFeedback = 5; |
81 | ParamSet.AngleTurnOverNick = 100; |
82 | ParamSet.AngleTurnOverNick = 85; |
82 | ParamSet.AngleTurnOverRoll = 100; |
83 | ParamSet.AngleTurnOverRoll = 85; |
83 | ParamSet.GyroAccTrim = 16; // 1/k |
84 | ParamSet.GyroAccTrim = 16; // 1/k |
84 | ParamSet.DriftComp = 4; |
85 | ParamSet.DriftComp = 4; |
85 | ParamSet.DynamicStability = 100; |
86 | ParamSet.DynamicStability = 100; |
- | 87 | ParamSet.J16Bitmask = 95; |
|
- | 88 | ParamSet.J17Bitmask = 243; |
|
- | 89 | ParamSet.J16Timing = 15; |
|
- | 90 | ParamSet.J17Timing = 15; |
|
- | 91 | ParamSet.NaviGpsModeControl = 253; |
|
- | 92 | ParamSet.NaviGpsGain = 100; |
|
- | 93 | ParamSet.NaviGpsP = 90; |
|
- | 94 | ParamSet.NaviGpsI = 90; |
|
- | 95 | ParamSet.NaviGpsD = 90; |
|
- | 96 | ParamSet.NaviGpsACC = 0; |
|
- | 97 | ParamSet.NaviGpsMinSat = 6; |
|
- | 98 | ParamSet.NaviStickThreshold = 8; |
|
86 | memcpy(ParamSet.Name, "Sport\0",6); |
99 | memcpy(ParamSet.Name, "Sport\0",6); |
87 | } |
100 | } |
88 | 101 | ||
89 | 102 | ||
90 | /***************************************************/ |
103 | /***************************************************/ |
91 | /* Default Values for parameter set 2 */ |
104 | /* Default Values for parameter set 2 */ |
92 | /***************************************************/ |
105 | /***************************************************/ |
93 | void ParamSet_DefaultSet2(void) // normal |
106 | void ParamSet_DefaultSet2(void) // normal |
94 | { |
107 | { |
95 | ParamSet.ChannelAssignment[CH_NICK] = 1; |
108 | ParamSet.ChannelAssignment[CH_NICK] = 1; |
96 | ParamSet.ChannelAssignment[CH_ROLL] = 2; |
109 | ParamSet.ChannelAssignment[CH_ROLL] = 2; |
97 | ParamSet.ChannelAssignment[CH_GAS] = 3; |
110 | ParamSet.ChannelAssignment[CH_GAS] = 3; |
98 | ParamSet.ChannelAssignment[CH_YAW] = 4; |
111 | ParamSet.ChannelAssignment[CH_YAW] = 4; |
99 | ParamSet.ChannelAssignment[CH_POTI1] = 5; |
112 | ParamSet.ChannelAssignment[CH_POTI1] = 5; |
100 | ParamSet.ChannelAssignment[CH_POTI2] = 6; |
113 | ParamSet.ChannelAssignment[CH_POTI2] = 6; |
101 | ParamSet.ChannelAssignment[CH_POTI3] = 7; |
114 | ParamSet.ChannelAssignment[CH_POTI3] = 7; |
102 | ParamSet.ChannelAssignment[CH_POTI4] = 8; |
115 | ParamSet.ChannelAssignment[CH_POTI4] = 8; |
103 | ParamSet.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE | CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX;//0x01; |
116 | ParamSet.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE | CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX; |
104 | ParamSet.Height_MinGas = 30; |
117 | ParamSet.Height_MinGas = 30; |
105 | ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1 |
118 | ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1 |
106 | ParamSet.Height_P = 10; // Wert : 0-32 |
119 | ParamSet.Height_P = 10; // Wert : 0-32 |
107 | ParamSet.Height_D = 30; // Wert : 0-250 |
120 | ParamSet.Height_D = 30; // Wert : 0-250 |
108 | ParamSet.Height_ACC_Effect = 30; // Wert : 0-250 |
121 | ParamSet.Height_ACC_Effect = 30; // Wert : 0-250 |
109 | ParamSet.Height_Gain = 3; // Wert : 0-50 |
122 | ParamSet.Height_Gain = 3; // Wert : 0-50 |
110 | ParamSet.Stick_P = 12; // Wert : 1-24 |
123 | ParamSet.Stick_P = 12; // Wert : 1-24 |
111 | ParamSet.Stick_D = 16; // Wert : 0-250 |
124 | ParamSet.Stick_D = 16; // Wert : 0-250 |
112 | ParamSet.Yaw_P = 6; // Wert : 1-20 |
125 | ParamSet.Yaw_P = 6; // Wert : 1-20 |
113 | ParamSet.Gas_Min = 8; // Wert : 0-32 |
126 | ParamSet.Gas_Min = 8; // Wert : 0-32 |
114 | ParamSet.Gas_Max = 230; // Wert : 33-250 |
127 | ParamSet.Gas_Max = 230; // Wert : 33-250 |
115 | ParamSet.GyroAccFactor = 30; // Wert : 1-64 |
128 | ParamSet.GyroAccFactor = 30; // Wert : 1-64 |
116 | ParamSet.CompassYawEffect = 128; // Wert : 0-250 |
129 | ParamSet.CompassYawEffect = 128; // Wert : 0-250 |
117 | ParamSet.Gyro_P = 80; // Wert : 0-250 |
130 | ParamSet.Gyro_P = 80; // Wert : 0-250 |
118 | ParamSet.Gyro_I = 120; // Wert : 0-250 |
131 | ParamSet.Gyro_I = 120; // Wert : 0-250 |
119 | ParamSet.LowVoltageWarning = 94; // Wert : 0-250 |
132 | ParamSet.LowVoltageWarning = 94; // Wert : 0-250 |
120 | ParamSet.EmergencyGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
133 | ParamSet.EmergencyGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
121 | ParamSet.EmergencyGasDuration = 30; // Wert : 0-250 // Zeit bis auf EmergencyGas geschaltet wird, wg. Rx-Problemen |
134 | ParamSet.EmergencyGasDuration = 30; // Wert : 0-250 // Zeit bis auf EmergencyGas geschaltet wird, wg. Rx-Problemen |
122 | ParamSet.UfoArrangement = 0; // X oder + Formation |
135 | ParamSet.UfoArrangement = 0; // X oder + Formation |
123 | ParamSet.I_Factor = 32; |
136 | ParamSet.I_Factor = 32; |
124 | ParamSet.UserParam1 = 253; // zur freien Verwendung |
137 | ParamSet.UserParam1 = 0; // zur freien Verwendung |
125 | ParamSet.UserParam2 = 100; // zur freien Verwendung |
138 | ParamSet.UserParam2 = 0; // zur freien Verwendung |
126 | ParamSet.UserParam3 = 90; // zur freien Verwendung |
139 | ParamSet.UserParam3 = 0; // zur freien Verwendung |
127 | ParamSet.UserParam4 = 90; // zur freien Verwendung |
140 | ParamSet.UserParam4 = 0; // zur freien Verwendung |
128 | ParamSet.UserParam5 = 90; // zur freien Verwendung |
141 | ParamSet.UserParam5 = 0; // zur freien Verwendung |
129 | ParamSet.UserParam6 = 90; // zur freien Verwendung |
142 | ParamSet.UserParam6 = 0; // zur freien Verwendung |
130 | ParamSet.UserParam7 = 0; // zur freien Verwendung |
143 | ParamSet.UserParam7 = 0; // zur freien Verwendung |
131 | ParamSet.UserParam8 = 0; // zur freien Verwendung |
144 | ParamSet.UserParam8 = 0; // zur freien Verwendung |
132 | ParamSet.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
145 | ParamSet.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
133 | ParamSet.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
146 | ParamSet.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
134 | ParamSet.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
147 | ParamSet.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
135 | ParamSet.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
148 | ParamSet.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
136 | ParamSet.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
149 | ParamSet.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
137 | ParamSet.ServoNickRefresh = 5; |
150 | ParamSet.ServoNickRefresh = 5; |
138 | ParamSet.LoopGasLimit = 50; |
151 | ParamSet.LoopGasLimit = 50; |
139 | ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
152 | ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
140 | ParamSet.LoopHysteresis = 50; |
153 | ParamSet.LoopHysteresis = 50; |
141 | ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
154 | ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
142 | ParamSet.Yaw_PosFeedback = 90; // Faktor, mit dem Yaw die Achsen Roll und Nick verkoppelt |
155 | ParamSet.Yaw_PosFeedback = 90; // Faktor, mit dem Yaw die Achsen Roll und Nick verkoppelt |
143 | ParamSet.Yaw_NegFeedback = 5; |
156 | ParamSet.Yaw_NegFeedback = 5; |
144 | ParamSet.AngleTurnOverNick = 100; |
157 | ParamSet.AngleTurnOverNick = 85; |
145 | ParamSet.AngleTurnOverRoll = 100; |
158 | ParamSet.AngleTurnOverRoll = 85; |
146 | ParamSet.GyroAccTrim = 32; // 1/k |
159 | ParamSet.GyroAccTrim = 32; // 1/k |
147 | ParamSet.DriftComp = 4; |
160 | ParamSet.DriftComp = 4; |
148 | ParamSet.DynamicStability = 75; |
161 | ParamSet.DynamicStability = 75; |
- | 162 | ParamSet.J16Bitmask = 95; |
|
- | 163 | ParamSet.J17Bitmask = 243; |
|
- | 164 | ParamSet.J16Timing = 20; |
|
- | 165 | ParamSet.J17Timing = 20; |
|
- | 166 | ParamSet.NaviGpsModeControl = 253; |
|
- | 167 | ParamSet.NaviGpsGain = 100; |
|
- | 168 | ParamSet.NaviGpsP = 90; |
|
- | 169 | ParamSet.NaviGpsI = 90; |
|
- | 170 | ParamSet.NaviGpsD = 90; |
|
- | 171 | ParamSet.NaviGpsACC = 0; |
|
- | 172 | ParamSet.NaviGpsMinSat = 6; |
|
- | 173 | ParamSet.NaviStickThreshold = 8; |
|
149 | memcpy(ParamSet.Name, "Normal\0", 7); |
174 | memcpy(ParamSet.Name, "Normal\0", 7); |
150 | } |
175 | } |
151 | 176 | ||
152 | 177 | ||
153 | /***************************************************/ |
178 | /***************************************************/ |
154 | /* Default Values for parameter set 3 */ |
179 | /* Default Values for parameter set 3 */ |
155 | /***************************************************/ |
180 | /***************************************************/ |
156 | void ParamSet_DefaultSet3(void) // beginner |
181 | void ParamSet_DefaultSet3(void) // beginner |
157 | { |
182 | { |
158 | ParamSet.ChannelAssignment[CH_NICK] = 1; |
183 | ParamSet.ChannelAssignment[CH_NICK] = 1; |
159 | ParamSet.ChannelAssignment[CH_ROLL] = 2; |
184 | ParamSet.ChannelAssignment[CH_ROLL] = 2; |
160 | ParamSet.ChannelAssignment[CH_GAS] = 3; |
185 | ParamSet.ChannelAssignment[CH_GAS] = 3; |
161 | ParamSet.ChannelAssignment[CH_YAW] = 4; |
186 | ParamSet.ChannelAssignment[CH_YAW] = 4; |
162 | ParamSet.ChannelAssignment[CH_POTI1] = 5; |
187 | ParamSet.ChannelAssignment[CH_POTI1] = 5; |
163 | ParamSet.ChannelAssignment[CH_POTI2] = 6; |
188 | ParamSet.ChannelAssignment[CH_POTI2] = 6; |
164 | ParamSet.ChannelAssignment[CH_POTI3] = 7; |
189 | ParamSet.ChannelAssignment[CH_POTI3] = 7; |
165 | ParamSet.ChannelAssignment[CH_POTI4] = 8; |
190 | ParamSet.ChannelAssignment[CH_POTI4] = 8; |
166 | ParamSet.GlobalConfig = CFG_ROTARY_RATE_LIMITER | CFG_AXIS_COUPLING_ACTIVE | CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX;//0x01; |
191 | ParamSet.GlobalConfig = CFG_ROTARY_RATE_LIMITER | CFG_AXIS_COUPLING_ACTIVE | CFG_COMPASS_ACTIVE | CFG_GPS_ACTIVE;//CFG_HEIGHT_CONTROL | CFG_HEIGHT_SWITCH | CFG_COMPASS_FIX; |
167 | ParamSet.Height_MinGas = 30; |
192 | ParamSet.Height_MinGas = 30; |
168 | ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1 |
193 | ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1 |
169 | ParamSet.Height_P = 10; // Wert : 0-32 |
194 | ParamSet.Height_P = 10; // Wert : 0-32 |
170 | ParamSet.Height_D = 30; // Wert : 0-250 |
195 | ParamSet.Height_D = 30; // Wert : 0-250 |
171 | ParamSet.Height_ACC_Effect = 30; // Wert : 0-250 |
196 | ParamSet.Height_ACC_Effect = 30; // Wert : 0-250 |
172 | ParamSet.Height_Gain = 3; // Wert : 0-50 |
197 | ParamSet.Height_Gain = 3; // Wert : 0-50 |
173 | ParamSet.Stick_P = 8; // Wert : 1-24 |
198 | ParamSet.Stick_P = 8; // Wert : 1-24 |
174 | ParamSet.Stick_D = 16; // Wert : 0-250 |
199 | ParamSet.Stick_D = 16; // Wert : 0-250 |
175 | ParamSet.Yaw_P = 6; // Wert : 1-20 |
200 | ParamSet.Yaw_P = 6; // Wert : 1-20 |
176 | ParamSet.Gas_Min = 8; // Wert : 0-32 |
201 | ParamSet.Gas_Min = 8; // Wert : 0-32 |
177 | ParamSet.Gas_Max = 230; // Wert : 33-250 |
202 | ParamSet.Gas_Max = 230; // Wert : 33-250 |
178 | ParamSet.GyroAccFactor = 30; // Wert : 1-64 |
203 | ParamSet.GyroAccFactor = 30; // Wert : 1-64 |
179 | ParamSet.CompassYawEffect = 128; // Wert : 0-250 |
204 | ParamSet.CompassYawEffect = 128; // Wert : 0-250 |
180 | ParamSet.Gyro_P = 100; // Wert : 0-250 |
205 | ParamSet.Gyro_P = 100; // Wert : 0-250 |
181 | ParamSet.Gyro_I = 120; // Wert : 0-250 |
206 | ParamSet.Gyro_I = 120; // Wert : 0-250 |
182 | ParamSet.LowVoltageWarning = 94; // Wert : 0-250 |
207 | ParamSet.LowVoltageWarning = 94; // Wert : 0-250 |
183 | ParamSet.EmergencyGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
208 | ParamSet.EmergencyGas = 35; // Wert : 0-250 // Gaswert bei Empangsverlust |
184 | ParamSet.EmergencyGasDuration = 20; // Wert : 0-250 // Zeit bis auf EmergencyGas geschaltet wird, wg. Rx-Problemen |
209 | ParamSet.EmergencyGasDuration = 20; // Wert : 0-250 // Zeit bis auf EmergencyGas geschaltet wird, wg. Rx-Problemen |
185 | ParamSet.UfoArrangement = 0; // X oder + Formation |
210 | ParamSet.UfoArrangement = 0; // X oder + Formation |
186 | ParamSet.I_Factor = 16; |
211 | ParamSet.I_Factor = 16; |
187 | ParamSet.UserParam1 = 253; // zur freien Verwendung |
212 | ParamSet.UserParam1 = 0; // zur freien Verwendung |
188 | ParamSet.UserParam2 = 100; // zur freien Verwendung |
213 | ParamSet.UserParam2 = 0; // zur freien Verwendung |
189 | ParamSet.UserParam3 = 90; // zur freien Verwendung |
214 | ParamSet.UserParam3 = 0; // zur freien Verwendung |
190 | ParamSet.UserParam4 = 90; // zur freien Verwendung |
215 | ParamSet.UserParam4 = 0; // zur freien Verwendung |
191 | ParamSet.UserParam5 = 90; // zur freien Verwendung |
216 | ParamSet.UserParam5 = 0; // zur freien Verwendung |
192 | ParamSet.UserParam6 = 90; // zur freien Verwendung |
217 | ParamSet.UserParam6 = 0; // zur freien Verwendung |
193 | ParamSet.UserParam7 = 0; // zur freien Verwendung |
218 | ParamSet.UserParam7 = 0; // zur freien Verwendung |
194 | ParamSet.UserParam8 = 0; // zur freien Verwendung |
219 | ParamSet.UserParam8 = 0; // zur freien Verwendung |
195 | ParamSet.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
220 | ParamSet.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos |
196 | ParamSet.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
221 | ParamSet.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo |
197 | ParamSet.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
222 | ParamSet.ServoNickCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo |
198 | ParamSet.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
223 | ParamSet.ServoNickMin = 50; // Wert : 0-250 // Anschlag |
199 | ParamSet.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
224 | ParamSet.ServoNickMax = 150; // Wert : 0-250 // Anschlag |
200 | ParamSet.ServoNickRefresh = 5; |
225 | ParamSet.ServoNickRefresh = 5; |
201 | ParamSet.LoopGasLimit = 50; |
226 | ParamSet.LoopGasLimit = 50; |
202 | ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
227 | ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag |
203 | ParamSet.LoopHysteresis = 50; |
228 | ParamSet.LoopHysteresis = 50; |
204 | ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
229 | ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts |
205 | ParamSet.Yaw_PosFeedback = 90; // Faktor, mit dem Yaw die Achsen Roll und Nick verkoppelt |
230 | ParamSet.Yaw_PosFeedback = 90; // Faktor, mit dem Yaw die Achsen Roll und Nick verkoppelt |
206 | ParamSet.Yaw_NegFeedback = 5; |
231 | ParamSet.Yaw_NegFeedback = 5; |
207 | ParamSet.AngleTurnOverNick = 100; |
232 | ParamSet.AngleTurnOverNick = 85; |
208 | ParamSet.AngleTurnOverRoll = 100; |
233 | ParamSet.AngleTurnOverRoll = 85; |
209 | ParamSet.GyroAccTrim = 32; // 1/k |
234 | ParamSet.GyroAccTrim = 32; // 1/k |
210 | ParamSet.DriftComp = 4; |
235 | ParamSet.DriftComp = 4; |
211 | ParamSet.DynamicStability = 50; |
236 | ParamSet.DynamicStability = 50; |
- | 237 | ParamSet.J16Bitmask = 95; |
|
- | 238 | ParamSet.J17Bitmask = 243; |
|
- | 239 | ParamSet.J16Timing = 30; |
|
- | 240 | ParamSet.J17Timing = 30; |
|
- | 241 | ParamSet.NaviGpsModeControl = 253; |
|
- | 242 | ParamSet.NaviGpsGain = 100; |
|
- | 243 | ParamSet.NaviGpsP = 90; |
|
- | 244 | ParamSet.NaviGpsI = 90; |
|
- | 245 | ParamSet.NaviGpsD = 90; |
|
- | 246 | ParamSet.NaviGpsACC = 0; |
|
- | 247 | ParamSet.NaviGpsMinSat = 6; |
|
- | 248 | ParamSet.NaviStickThreshold = 8; |
|
212 | memcpy(ParamSet.Name, "Beginner\0", 9); |
249 | memcpy(ParamSet.Name, "Beginner\0", 9); |
213 | } |
250 | } |
214 | 251 | ||
215 | /***************************************************/ |
252 | /***************************************************/ |
216 | /* Read Parameter from EEPROM as byte */ |
253 | /* Read Parameter from EEPROM as byte */ |
217 | /***************************************************/ |
254 | /***************************************************/ |
218 | uint8_t GetParamByte(uint8_t param_id) |
255 | uint8_t GetParamByte(uint8_t param_id) |
219 | { |
256 | { |
220 | return eeprom_read_byte(&EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id]); |
257 | return eeprom_read_byte(&EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id]); |
221 | } |
258 | } |
222 | 259 | ||
223 | /***************************************************/ |
260 | /***************************************************/ |
224 | /* Write Parameter to EEPROM as byte */ |
261 | /* Write Parameter to EEPROM as byte */ |
225 | /***************************************************/ |
262 | /***************************************************/ |
226 | void SetParamByte(uint8_t param_id, uint8_t value) |
263 | void SetParamByte(uint8_t param_id, uint8_t value) |
227 | { |
264 | { |
228 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id], value); |
265 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id], value); |
229 | } |
266 | } |
230 | 267 | ||
231 | /***************************************************/ |
268 | /***************************************************/ |
232 | /* Read Parameter from EEPROM as word */ |
269 | /* Read Parameter from EEPROM as word */ |
233 | /***************************************************/ |
270 | /***************************************************/ |
234 | uint16_t GetParamWord(uint8_t param_id) |
271 | uint16_t GetParamWord(uint8_t param_id) |
235 | { |
272 | { |
236 | return eeprom_read_word((uint16_t *) &EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id]); |
273 | return eeprom_read_word((uint16_t *) &EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id]); |
237 | } |
274 | } |
238 | 275 | ||
239 | /***************************************************/ |
276 | /***************************************************/ |
240 | /* Write Parameter to EEPROM as word */ |
277 | /* Write Parameter to EEPROM as word */ |
241 | /***************************************************/ |
278 | /***************************************************/ |
242 | void SetParamWord(uint8_t param_id, uint16_t value) |
279 | void SetParamWord(uint8_t param_id, uint16_t value) |
243 | { |
280 | { |
244 | eeprom_write_word((uint16_t *) &EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id], value); |
281 | eeprom_write_word((uint16_t *) &EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id], value); |
245 | } |
282 | } |
246 | 283 | ||
247 | 284 | ||
248 | /***************************************************/ |
285 | /***************************************************/ |
249 | /* Read Parameter Set from EEPROM */ |
286 | /* Read Parameter Set from EEPROM */ |
250 | /***************************************************/ |
287 | /***************************************************/ |
251 | // number [0..5] |
288 | // number [0..5] |
252 | void ParamSet_ReadFromEEProm(uint8_t setnumber) |
289 | void ParamSet_ReadFromEEProm(uint8_t setnumber) |
253 | { |
290 | { |
254 | if (setnumber > 5) setnumber = 5; |
291 | if (setnumber > 5) setnumber = 5; |
255 | eeprom_read_block((uint8_t *) &ParamSet.ChannelAssignment[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN); |
292 | eeprom_read_block((uint8_t *) &ParamSet.ChannelAssignment[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN); |
- | 293 | LED_Init(); |
|
256 | } |
294 | } |
257 | 295 | ||
258 | /***************************************************/ |
296 | /***************************************************/ |
259 | /* Write Parameter Set to EEPROM */ |
297 | /* Write Parameter Set to EEPROM */ |
260 | /***************************************************/ |
298 | /***************************************************/ |
261 | // number [0..5] |
299 | // number [0..5] |
262 | void ParamSet_WriteToEEProm(uint8_t setnumber) |
300 | void ParamSet_WriteToEEProm(uint8_t setnumber) |
263 | { |
301 | { |
264 | if(setnumber > 5) setnumber = 5; |
302 | if(setnumber > 5) setnumber = 5; |
265 | eeprom_write_block((uint8_t *) &ParamSet.ChannelAssignment[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN); |
303 | eeprom_write_block((uint8_t *) &ParamSet.ChannelAssignment[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN); |
266 | // set this parameter set to active set |
304 | // set this parameter set to active set |
267 | eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber); |
305 | eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber); |
- | 306 | LED_Init(); |
|
268 | } |
307 | } |
269 | 308 | ||
270 | /***************************************************/ |
309 | /***************************************************/ |
271 | /* Get active parameter set */ |
310 | /* Get active parameter set */ |
272 | /***************************************************/ |
311 | /***************************************************/ |
273 | uint8_t GetActiveParamSet(void) |
312 | uint8_t GetActiveParamSet(void) |
274 | { |
313 | { |
275 | uint8_t setnumber; |
314 | uint8_t setnumber; |
276 | setnumber = eeprom_read_byte(&EEPromArray[PID_ACTIVE_SET]); |
315 | setnumber = eeprom_read_byte(&EEPromArray[PID_ACTIVE_SET]); |
277 | if(setnumber > 5) |
316 | if(setnumber > 5) |
278 | { |
317 | { |
279 | setnumber = 2; |
318 | setnumber = 2; |
280 | eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber); |
319 | eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber); |
281 | } |
320 | } |
282 | return(setnumber); |
321 | return(setnumber); |
283 | } |
322 | } |
284 | 323 | ||
285 | /***************************************************/ |
324 | /***************************************************/ |
286 | /* Set active parameter set */ |
325 | /* Set active parameter set */ |
287 | /***************************************************/ |
326 | /***************************************************/ |
288 | void SetActiveParamSet(uint8_t setnumber) |
327 | void SetActiveParamSet(uint8_t setnumber) |
289 | { |
328 | { |
290 | if(setnumber > 5) setnumber = 5; |
329 | if(setnumber > 5) setnumber = 5; |
291 | eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber); |
330 | eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber); |
292 | } |
331 | } |
293 | 332 | ||
294 | /***************************************************/ |
333 | /***************************************************/ |
295 | /* Initialize EEPROM Parameter Sets */ |
334 | /* Initialize EEPROM Parameter Sets */ |
296 | /***************************************************/ |
335 | /***************************************************/ |
297 | void ParamSet_Init(void) |
336 | void ParamSet_Init(void) |
298 | { |
337 | { |
299 | // version check |
338 | // version check |
300 | if(eeprom_read_byte(&EEPromArray[PID_VERSION]) != EEPARAM_VERSION) |
339 | if(eeprom_read_byte(&EEPromArray[PID_VERSION]) != EEPARAM_VERSION) |
301 | { |
340 | { |
302 | // if version check faild |
341 | // if version check faild |
303 | printf("\n\rInit. EEPROM: Generating Default-Parameter..."); |
342 | printf("\n\rInit. EEPROM: Generating Default-Parameter..."); |
304 | ParamSet_DefaultSet1(); // Fill ParamSet Structure to default parameter set 1 (Sport) |
343 | ParamSet_DefaultSet1(); // Fill ParamSet Structure to default parameter set 1 (Sport) |
305 | // fill all 5 parameter settings with set 1 except otherwise defined |
344 | // fill all 5 parameter settings with set 1 except otherwise defined |
306 | for (unsigned char i=0;i<6;i++) |
345 | for (unsigned char i=0;i<6;i++) |
307 | { |
346 | { |
308 | if(i==2) ParamSet_DefaultSet2(); // Kamera |
347 | if(i==2) ParamSet_DefaultSet2(); // Kamera |
309 | if(i==3) ParamSet_DefaultSet3(); // Beginner |
348 | if(i==3) ParamSet_DefaultSet3(); // Beginner |
310 | if(i>3) ParamSet_DefaultSet2(); // Kamera |
349 | if(i>3) ParamSet_DefaultSet2(); // Kamera |
311 | ParamSet_WriteToEEProm(i); |
350 | ParamSet_WriteToEEProm(i); |
312 | } |
351 | } |
313 | // default-Setting is parameter set 3 |
352 | // default-Setting is parameter set 3 |
314 | SetParamByte(PID_ACTIVE_SET, 3); |
353 | SetParamByte(PID_ACTIVE_SET, 3); |
315 | // update version info |
354 | // update version info |
316 | SetParamByte(PID_VERSION, EEPARAM_VERSION); |
355 | SetParamByte(PID_VERSION, EEPARAM_VERSION); |
317 | } |
356 | } |
318 | // read active parameter set to ParamSet stucture |
357 | // read active parameter set to ParamSet stucture |
319 | ParamSet_ReadFromEEProm(GetParamByte(PID_ACTIVE_SET)); |
358 | ParamSet_ReadFromEEProm(GetParamByte(PID_ACTIVE_SET)); |
320 | printf("\n\rUsing Parameter Set %d", GetParamByte(PID_ACTIVE_SET)); |
359 | printf("\n\rUsing Parameter Set %d", GetParamByte(PID_ACTIVE_SET)); |
321 | } |
360 | } |
322 | 361 |