Rev 2497 | Rev 2501 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2497 | Rev 2499 | ||
---|---|---|---|
Line 20... | Line 20... | ||
20 | unsigned char *SPI_TX_Buffer; |
20 | unsigned char *SPI_TX_Buffer; |
Line 21... | Line 21... | ||
21 | 21 | ||
22 | unsigned char SPITransferCompleted, SPI_ChkSum; |
22 | unsigned char SPITransferCompleted, SPI_ChkSum; |
Line 23... | Line 23... | ||
23 | unsigned char SPI_RxDataValid,NaviDataOkay = 250; |
23 | unsigned char SPI_RxDataValid,NaviDataOkay = 250; |
24 | 24 | ||
25 | unsigned char SPI_CommandSequence[] = { SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_SLOW, |
25 | unsigned char SPI_CommandSequence[] = { SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_SLOW,SPI_FCCMD_BL_ACCU, |
26 | SPI_FCCMD_STICK, SPI_FCCMD_VERSION, SPI_FCCMD_BL_ACCU, |
26 | SPI_FCCMD_STICK, SPI_FCCMD_MISC, SPI_FCCMD_BL_ACCU, |
27 | SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_MISC,SPI_FCCMD_SERVOS, |
27 | SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_BL_ACCU, |
28 | SPI_FCCMD_STICK, SPI_FCCMD_PARAMETER2, SPI_FCCMD_BL_ACCU |
28 | SPI_FCCMD_STICK, SPI_FCCMD_PARAMETER2, SPI_FCCMD_BL_ACCU |
29 | }; |
29 | }; |
30 | unsigned char SPI_CommandCounter = 0; |
30 | unsigned char SPI_CommandCounter = 0; |
Line 148... | Line 148... | ||
148 | 148 | ||
149 | //------------------------------------------------------ |
149 | //------------------------------------------------------ |
150 | void UpdateSPI_Buffer(void) |
150 | void UpdateSPI_Buffer(void) |
151 | { |
151 | { |
152 | // signed int tmp; |
152 | // signed int tmp; |
153 | static unsigned char motorindex, oldcommand = SPI_NCCMD_VERSION, slow_command; |
153 | static unsigned char motorindex, oldcommand = SPI_NCCMD_VERSION, slow_command = 0; |
154 | ToNaviCtrl.IntegralNick = (int) (IntegralNick / (long)(EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
154 | ToNaviCtrl.IntegralNick = (int) (IntegralNick / (long)(EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
155 | ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / (long)(EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
155 | ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / (long)(EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad |
156 | ToNaviCtrl.GyroCompass = (10 * ErsatzKompass) / GIER_GRAD_FAKTOR; |
156 | ToNaviCtrl.GyroCompass = (10 * ErsatzKompass) / GIER_GRAD_FAKTOR; |
157 | ToNaviCtrl.GyroGier = (signed int) AdNeutralGier - AdWertGier; |
157 | ToNaviCtrl.GyroGier = (signed int) AdNeutralGier - AdWertGier; |
Line 197... | Line 197... | ||
197 | break; |
197 | break; |
198 | case SPI_FCCMD_SLOW: |
198 | case SPI_FCCMD_SLOW: |
199 | switch(slow_command) |
199 | switch(slow_command) |
200 | { |
200 | { |
201 | case 0: |
201 | case 0: |
- | 202 | ToNaviCtrl.Command = SPI_FCCMD_VERSION; |
|
- | 203 | ToNaviCtrl.Param.Byte[0] = VERSION_MAJOR; |
|
- | 204 | ToNaviCtrl.Param.Byte[1] = VERSION_MINOR; |
|
- | 205 | ToNaviCtrl.Param.Byte[2] = VERSION_PATCH; |
|
- | 206 | ToNaviCtrl.Param.Byte[3] = NC_SPI_COMPATIBLE; |
|
- | 207 | ToNaviCtrl.Param.Byte[4] = PlatinenVersion; |
|
- | 208 | ToNaviCtrl.Param.Byte[5] = EE_Parameter.LandingSpeed; |
|
- | 209 | ToNaviCtrl.Param.Byte[6] = EE_Parameter.ComingHomeAltitude; |
|
- | 210 | ToNaviCtrl.Param.Byte[7] = EE_Parameter.AutoPhotoAtitudes; |
|
- | 211 | ToNaviCtrl.Param.Byte[8] = VersionInfo.BL_Firmware; |
|
- | 212 | ToNaviCtrl.Param.Byte[9] = 0; |
|
- | 213 | ToNaviCtrl.Param.Int[5] = FlugMinutenGesamt; // 10 & 11 |
|
- | 214 | slow_command++; |
|
- | 215 | break; |
|
- | 216 | case 1: |
|
202 | ToNaviCtrl.Command = SPI_FCCMD_PARAMETER1; slow_command = 1; |
217 | ToNaviCtrl.Command = SPI_FCCMD_PARAMETER1; |
203 | ToNaviCtrl.Param.Byte[0] = (unsigned char) BattLowVoltageWarning; //0.1V |
218 | ToNaviCtrl.Param.Byte[0] = (unsigned char) BattLowVoltageWarning; //0.1V |
204 | ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain; // Parameters for the Naviboard |
219 | ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain; // Parameters for the Naviboard |
205 | ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviGpsP; |
220 | ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviGpsP; |
206 | ToNaviCtrl.Param.Byte[3] = EE_Parameter.NaviGpsI; |
221 | ToNaviCtrl.Param.Byte[3] = EE_Parameter.NaviGpsI; |
207 | ToNaviCtrl.Param.Byte[4] = EE_Parameter.NaviGpsD; |
222 | ToNaviCtrl.Param.Byte[4] = EE_Parameter.NaviGpsD; |
Line 210... | Line 225... | ||
210 | ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviStickThreshold; |
225 | ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviStickThreshold; |
211 | ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviMaxFlyingRange; |
226 | ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviMaxFlyingRange; |
212 | ToNaviCtrl.Param.Byte[9] = EE_Parameter.NaviWindCorrection; |
227 | ToNaviCtrl.Param.Byte[9] = EE_Parameter.NaviWindCorrection; |
213 | ToNaviCtrl.Param.Byte[10] = EE_Parameter.NaviAccCompensation; |
228 | ToNaviCtrl.Param.Byte[10] = EE_Parameter.NaviAccCompensation; |
214 | ToNaviCtrl.Param.Byte[11] = EE_Parameter.NaviAngleLimitation; |
229 | ToNaviCtrl.Param.Byte[11] = EE_Parameter.NaviAngleLimitation; |
- | 230 | slow_command++; |
|
215 | break; |
231 | break; |
- | 232 | case 2: |
|
- | 233 | ToNaviCtrl.Command = SPI_FCCMD_SLOW2; |
|
- | 234 | ToNaviCtrl.Param.Int[0] = BoatNeutralNick; // 0 & 1 |
|
- | 235 | ToNaviCtrl.Param.Int[1] = BoatNeutralRoll; // 2 & 3 |
|
- | 236 | ToNaviCtrl.Param.Int[2] = BoatNeutralGier; // 4 & 5 |
|
- | 237 | ToNaviCtrl.Param.Byte[6] = EE_Parameter.CamOrientation; |
|
- | 238 | ToNaviCtrl.Param.Byte[7] = EE_Parameter.CompassOffset; |
|
- | 239 | ToNaviCtrl.Param.Byte[8] = Parameter_GlobalConfig; |
|
- | 240 | ToNaviCtrl.Param.Byte[9] = Parameter_ExtraConfig; |
|
- | 241 | ToNaviCtrl.Param.Byte[10] = EE_Parameter.OrientationAngle; |
|
- | 242 | ToNaviCtrl.Param.Byte[11] = EE_Parameter.GlobalConfig3; |
|
- | 243 | slow_command++; |
|
- | 244 | break; |
|
- | 245 | case 3: |
|
- | 246 | ToNaviCtrl.Command = SPI_FCCMD_SLOW3; |
|
- | 247 | ToNaviCtrl.Param.Byte[0] = Parameter_ServoNickControl; |
|
- | 248 | ToNaviCtrl.Param.Byte[1] = Parameter_ServoRollControl; |
|
- | 249 | ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviDescendRange; // in 10m |
|
- | 250 | ToNaviCtrl.Param.Byte[3] = Parameter_MaximumAltitude; |
|
- | 251 | ToNaviCtrl.Param.Byte[4] = 0; |
|
- | 252 | ToNaviCtrl.Param.Byte[5] = 0; |
|
- | 253 | ToNaviCtrl.Param.Byte[6] = 0; |
|
- | 254 | ToNaviCtrl.Param.Byte[7] = 0; |
|
- | 255 | ToNaviCtrl.Param.Byte[8] = 0; |
|
- | 256 | ToNaviCtrl.Param.Byte[9] = 0; |
|
- | 257 | ToNaviCtrl.Param.Byte[10] = 0; |
|
- | 258 | ToNaviCtrl.Param.Byte[11] = 0; |
|
- | 259 | slow_command++; |
|
- | 260 | break; |
|
216 | default: |
261 | default: |
217 | ToNaviCtrl.Command = SPI_FCCMD_NEUTRAL; slow_command = 0; |
262 | ToNaviCtrl.Command = SPI_FCCMD_NEUTRAL; |
218 | ToNaviCtrl.Param.Int[0] = AdNeutralNick; // 0 & 1 |
263 | ToNaviCtrl.Param.Int[0] = AdNeutralNick; // 0 & 1 |
219 | ToNaviCtrl.Param.Int[1] = AdNeutralRoll; // 2 & 3 |
264 | ToNaviCtrl.Param.Int[1] = AdNeutralRoll; // 2 & 3 |
220 | ToNaviCtrl.Param.Int[2] = AdNeutralGier; // 4 & 5 |
265 | ToNaviCtrl.Param.Int[2] = AdNeutralGier; // 4 & 5 |
221 | ToNaviCtrl.Param.Byte[6] = EE_Parameter.Driftkomp; |
266 | ToNaviCtrl.Param.Byte[6] = EE_Parameter.Driftkomp; |
222 | ToNaviCtrl.Param.Byte[7] = HoverGas / 4; |
267 | ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviPH_LoginTime; |
223 | ToNaviCtrl.Param.Byte[8] = 0; |
268 | ToNaviCtrl.Param.Byte[8] = EE_Parameter.Receiver; |
224 | ToNaviCtrl.Param.Byte[9] = 0; |
269 | ToNaviCtrl.Param.Byte[9] = EE_Parameter.NaviGpsPLimit; |
225 | ToNaviCtrl.Param.Byte[10] = 0; |
270 | ToNaviCtrl.Param.Byte[10] = EE_Parameter.NaviGpsILimit; |
226 | ToNaviCtrl.Param.Byte[11] = 0; |
271 | ToNaviCtrl.Param.Byte[11] = EE_Parameter.NaviGpsDLimit; |
- | 272 | slow_command = 0; |
|
227 | break; |
273 | break; |
228 | } |
274 | } |
229 | break; |
275 | break; |
230 | case SPI_FCCMD_PARAMETER2: |
276 | case SPI_FCCMD_PARAMETER2: |
231 | ToNaviCtrl.Param.Byte[0] = EE_Parameter.AutoPhotoDistance; // Distance between Photo releases |
277 | ToNaviCtrl.Param.Byte[0] = EE_Parameter.AutoPhotoDistance; // Distance between Photo releases |
Line 238... | Line 284... | ||
238 | } |
284 | } |
239 | ToNaviCtrl.Param.Byte[1] = ToNC_SpeakHoTT; |
285 | ToNaviCtrl.Param.Byte[1] = ToNC_SpeakHoTT; |
240 | #else |
286 | #else |
241 | ToNaviCtrl.Param.Byte[1] = 0; |
287 | ToNaviCtrl.Param.Byte[1] = 0; |
242 | #endif |
288 | #endif |
243 | ToNaviCtrl.Param.Byte[2] = EE_Parameter.LandingSpeed; |
- | |
244 | ToNaviCtrl.Param.Byte[3] = EE_Parameter.ComingHomeAltitude; |
289 | ToNaviCtrl.Param.Int[1] = Capacity.UsedCapacity; // mAh // 2 & 3 |
245 | ToNaviCtrl.Param.Byte[4] = LowVoltageHomeActive; |
290 | ToNaviCtrl.Param.Byte[4] = LowVoltageHomeActive; |
246 | ToNaviCtrl.Param.Byte[5] = ToNC_Load_WP_List; |
291 | ToNaviCtrl.Param.Byte[5] = ToNC_Load_WP_List; |
247 | ToNaviCtrl.Param.Byte[6] = ToNC_Load_SingePoint; |
292 | ToNaviCtrl.Param.Byte[6] = ToNC_Load_SingePoint; |
248 | ToNaviCtrl.Param.Byte[7] = ToNC_Store_SingePoint; |
293 | ToNaviCtrl.Param.Byte[7] = ToNC_Store_SingePoint; |
249 | ToNC_Load_WP_List = 0; |
294 | ToNC_Load_WP_List = 0; |
250 | ToNC_Load_SingePoint = 0; |
295 | ToNC_Load_SingePoint = 0; |
251 | ToNC_Store_SingePoint = 0; |
296 | ToNC_Store_SingePoint = 0; |
252 | if(Parameter_KompassWirkung) ToNaviCtrl.Param.sInt[4] = KompassSollWert; // Pos. 8 & 9 |
297 | if(Parameter_KompassWirkung) ToNaviCtrl.Param.sInt[4] = KompassSollWert; // Pos. 8 & 9 |
253 | else ToNaviCtrl.Param.sInt[4] = ErsatzKompassInGrad; // answer with the compass value if the Compass effect is zero |
298 | else ToNaviCtrl.Param.sInt[4] = ErsatzKompassInGrad; // answer with the compass value if the Compass effect is zero |
254 | ToNaviCtrl.Param.Byte[10] = EE_Parameter.AutoPhotoAtitudes; |
299 | ToNaviCtrl.Param.Byte[10] = FC_StatusFlags3; |
255 | ToNaviCtrl.Param.Byte[11] = EE_Parameter.SingleWpSpeed; |
300 | ToNaviCtrl.Param.Byte[11] = EE_Parameter.SingleWpSpeed; |
256 | break; |
301 | break; |
257 | case SPI_FCCMD_STICK: |
302 | case SPI_FCCMD_STICK: |
258 | /* |
303 | /* |
259 | cli(); |
304 | cli(); |
Line 285... | Line 330... | ||
285 | { |
330 | { |
286 | WinkelOut.CalcState = 0; |
331 | WinkelOut.CalcState = 0; |
287 | ToNaviCtrl.Param.Byte[0] = 5; |
332 | ToNaviCtrl.Param.Byte[0] = 5; |
288 | } |
333 | } |
289 | else ToNaviCtrl.Param.Byte[0] = WinkelOut.CalcState; |
334 | else ToNaviCtrl.Param.Byte[0] = WinkelOut.CalcState; |
290 | ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviPH_LoginTime; |
335 | ToNaviCtrl.Param.Byte[1] = HoverGas / 4; |
291 | ToNaviCtrl.Param.Int[1] = (int)(HoehenWert/5); |
336 | ToNaviCtrl.Param.Int[1] = (int)(HoehenWert/5); //2 & 3 |
292 | ToNaviCtrl.Param.Int[2] = (int)(SollHoehe/5); |
337 | ToNaviCtrl.Param.Int[2] = (int)(SollHoehe/5); //4 & 5 |
293 | ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviGpsPLimit; |
338 | ToNaviCtrl.Param.Byte[6] = VersionInfo.HardwareError[0]; |
294 | ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviGpsILimit; |
339 | ToNaviCtrl.Param.Byte[7] = VersionInfo.HardwareError[1]; |
- | 340 | VersionInfo.HardwareError[0] &= ~FC_ERROR0_CAREFREE; // VersionInfo.HardwareError[0] = 0; |
|
- | 341 | VersionInfo.HardwareError[1] &= FC_ERROR1_MIXER; |
|
295 | ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviGpsDLimit; |
342 | ToNaviCtrl.Param.Byte[8] = DebugOut.Analog[28]; // I2C-Error counter |
296 | ToNaviCtrl.Param.Byte[9] = (unsigned char) SenderOkay; |
343 | ToNaviCtrl.Param.Byte[9] = (unsigned char) SenderOkay; |
297 | ToNaviCtrl.Param.Byte[10] = NC_Wait_for_LED; |
344 | ToNaviCtrl.Param.Byte[10] = NC_Wait_for_LED; |
298 | ToNaviCtrl.Param.Byte[11] = DebugOut.Analog[7] / 4; //GasMischanteil |
345 | ToNaviCtrl.Param.Byte[11] = DebugOut.Analog[7] / 4; //GasMischanteil |
299 | break; |
346 | break; |
300 | case SPI_FCCMD_VERSION: |
- | |
301 | ToNaviCtrl.Param.Byte[0] = VERSION_MAJOR; |
- | |
302 | ToNaviCtrl.Param.Byte[1] = VERSION_MINOR; |
- | |
303 | ToNaviCtrl.Param.Byte[2] = VERSION_PATCH; |
- | |
304 | ToNaviCtrl.Param.Byte[3] = NC_SPI_COMPATIBLE; |
- | |
305 | ToNaviCtrl.Param.Byte[4] = PlatinenVersion; |
- | |
306 | ToNaviCtrl.Param.Byte[5] = VersionInfo.HardwareError[0]; |
- | |
307 | ToNaviCtrl.Param.Byte[6] = VersionInfo.HardwareError[1]; |
- | |
308 | VersionInfo.HardwareError[0] &= ~FC_ERROR0_CAREFREE; // VersionInfo.HardwareError[0] = 0; |
- | |
309 | VersionInfo.HardwareError[1] &= FC_ERROR1_MIXER; |
- | |
310 | ToNaviCtrl.Param.Byte[7] = EE_Parameter.CompassOffset; |
- | |
311 | ToNaviCtrl.Param.Byte[8] = Parameter_GlobalConfig; |
- | |
312 | ToNaviCtrl.Param.Byte[9] = Parameter_ExtraConfig; |
- | |
313 | ToNaviCtrl.Param.Byte[10] = EE_Parameter.OrientationAngle; |
- | |
314 | ToNaviCtrl.Param.Byte[11] = EE_Parameter.GlobalConfig3; |
- | |
315 | break; |
- | |
316 | case SPI_FCCMD_SERVOS: |
- | |
317 | ToNaviCtrl.Param.Int[0] = Capacity.UsedCapacity; // mAh |
- | |
318 | ToNaviCtrl.Param.Byte[2] = Parameter_ServoNickControl; |
- | |
319 | ToNaviCtrl.Param.Byte[3] = Parameter_ServoRollControl; |
- | |
320 | ToNaviCtrl.Param.Byte[4] = DebugOut.Analog[28]; // I2C-Error counter |
- | |
321 | ToNaviCtrl.Param.Byte[5] = FC_StatusFlags3; |
- | |
322 | ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviDescendRange; // in 10m |
- | |
323 | ToNaviCtrl.Param.Byte[7] = Parameter_MaximumAltitude; |
- | |
324 | ToNaviCtrl.Param.Int[4] = FlugMinutenGesamt; // 8 & 9 |
- | |
325 | ToNaviCtrl.Param.Byte[10] = EE_Parameter.CamOrientation; |
- | |
326 | ToNaviCtrl.Param.Byte[11] = VersionInfo.BL_Firmware; |
- | |
327 | break; |
- | |
328 | } |
347 | } |
Line 329... | Line 348... | ||
329 | 348 | ||
330 | if(SPI_RxDataValid) |
349 | if(SPI_RxDataValid) |
331 | { |
350 | { |