Rev 1419 | Rev 1423 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1419 | Rev 1420 | ||
---|---|---|---|
Line 126... | Line 126... | ||
126 | timer = SetDelay(500); |
126 | timer = SetDelay(500); |
127 | if(print) while (!CheckDelay(timer)); |
127 | if(print) while (!CheckDelay(timer)); |
128 | if(UBat < 130) |
128 | if(UBat < 130) |
129 | { |
129 | { |
130 | BattLowVoltageWarning = 3 * EE_Parameter.UnterspannungsWarnung; |
130 | BattLowVoltageWarning = 3 * EE_Parameter.UnterspannungsWarnung; |
131 | if(print) |
131 | if(print) |
132 | { |
132 | { |
133 | Piep(3,200); |
133 | Piep(3,200); |
134 | printf(" 3 Cells "); |
134 | printf(" 3 Cells "); |
135 | } |
135 | } |
136 | } |
136 | } |
137 | else |
137 | else |
138 | { |
138 | { |
139 | BattLowVoltageWarning = 4 * EE_Parameter.UnterspannungsWarnung; |
139 | BattLowVoltageWarning = 4 * EE_Parameter.UnterspannungsWarnung; |
140 | if(print) |
140 | if(print) |
141 | { |
141 | { |
142 | Piep(4,200); |
142 | Piep(4,200); |
143 | printf(" 4 Cells "); |
143 | printf(" 4 Cells "); |
144 | } |
144 | } |
145 | } |
145 | } |
146 | } |
146 | } |
147 | else BattLowVoltageWarning = EE_Parameter.UnterspannungsWarnung; |
147 | else BattLowVoltageWarning = EE_Parameter.UnterspannungsWarnung; |
148 | // if(BattLowVoltageWarning < 93) BattLowVoltageWarning = 93; |
148 | // if(BattLowVoltageWarning < 93) BattLowVoltageWarning = 93; |
149 | if(print) printf(" Low warning level: %d.%d",BattLowVoltageWarning/10,BattLowVoltageWarning%10); |
149 | if(print) printf(" Low warning level: %d.%d",BattLowVoltageWarning/10,BattLowVoltageWarning%10); |
Line 236... | Line 236... | ||
236 | // + Check connected BL-Ctrls |
236 | // + Check connected BL-Ctrls |
237 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
237 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
238 | printf("\n\rFound BL-Ctrl: "); |
238 | printf("\n\rFound BL-Ctrl: "); |
239 | motorread = 0; UpdateMotor = 0; SendMotorData(); while(!UpdateMotor); motorread = 0; // read the first I2C-Data |
239 | motorread = 0; UpdateMotor = 0; SendMotorData(); while(!UpdateMotor); motorread = 0; // read the first I2C-Data |
240 | timer = SetDelay(2000); |
240 | timer = SetDelay(2000); |
241 | 241 | ||
242 | 242 | ||
243 | for(i=0; i < MAX_MOTORS; i++) |
243 | for(i=0; i < MAX_MOTORS; i++) |
244 | { |
244 | { |
245 | UpdateMotor = 0; |
245 | UpdateMotor = 0; |
246 | SendMotorData(); |
246 | SendMotorData(); |
247 | while(!UpdateMotor); |
247 | while(!UpdateMotor); |
Line 251... | Line 251... | ||
251 | } |
251 | } |
252 | if(MotorPresent[i]) printf("%d ",i+1); |
252 | if(MotorPresent[i]) printf("%d ",i+1); |
253 | } |
253 | } |
254 | for(i=0; i < MAX_MOTORS; i++) |
254 | for(i=0; i < MAX_MOTORS; i++) |
255 | { |
255 | { |
256 | if(!MotorPresent[i] && Mixer.Motor[i][0] > 0) |
256 | if(!MotorPresent[i] && Mixer.Motor[i][0] > 0) |
257 | { |
257 | { |
258 | printf("\n\r\n\r!! MISSING BL-CTRL: %d !!",i+1); |
258 | printf("\n\r\n\r!! MISSING BL-CTRL: %d !!",i+1); |
259 | ServoActive = 1; // just in case the FC would be used as camera-stabilizer |
259 | ServoActive = 1; // just in case the FC would be used as camera-stabilizer |
260 | } |
260 | } |
261 | MotorError[i] = 0; |
261 | MotorError[i] = 0; |
262 | } |
262 | } |
263 | printf("\n\r==================================="); |
263 | printf("\n\r==================================="); |
264 | SendMotorData(); |
264 | SendMotorData(); |
265 | //printf("\n size: %u",STRUCT_PARAM_LAENGE); |
265 | //printf("\n size: %u",STRUCT_PARAM_LAENGE); |
Line 293... | Line 293... | ||
293 | EE_Parameter.Kanalbelegung[3] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]); |
293 | EE_Parameter.Kanalbelegung[3] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+3]); |
294 | EE_Parameter.Kanalbelegung[4] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+4]); |
294 | EE_Parameter.Kanalbelegung[4] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+4]); |
295 | EE_Parameter.Kanalbelegung[5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+5]); |
295 | EE_Parameter.Kanalbelegung[5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+5]); |
296 | EE_Parameter.Kanalbelegung[6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+6]); |
296 | EE_Parameter.Kanalbelegung[6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+6]); |
297 | EE_Parameter.Kanalbelegung[7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+7]); |
297 | EE_Parameter.Kanalbelegung[7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+7]); |
298 | 298 | ||
299 | if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+8]) < 255) |
299 | if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+8]) < 255) |
300 | { |
300 | { |
301 | EE_Parameter.Kanalbelegung[K_POTI5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+8]); |
301 | EE_Parameter.Kanalbelegung[K_POTI5] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+8]); |
302 | EE_Parameter.Kanalbelegung[K_POTI6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+9]); |
302 | EE_Parameter.Kanalbelegung[K_POTI6] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+9]); |
303 | EE_Parameter.Kanalbelegung[K_POTI7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+10]); |
303 | EE_Parameter.Kanalbelegung[K_POTI7] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+10]); |
304 | EE_Parameter.Kanalbelegung[K_POTI8] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+11]); |
304 | EE_Parameter.Kanalbelegung[K_POTI8] = eeprom_read_byte(&EEPromArray[EEPROM_ADR_CHANNELS+11]); |
305 | } |
305 | } |
306 | else |
306 | else |
307 | { |
307 | { |
308 | EE_Parameter.Kanalbelegung[K_POTI5] = 9; |
308 | EE_Parameter.Kanalbelegung[K_POTI5] = 9; |
309 | EE_Parameter.Kanalbelegung[K_POTI6] = 10; |
309 | EE_Parameter.Kanalbelegung[K_POTI6] = 10; |
310 | EE_Parameter.Kanalbelegung[K_POTI7] = 11; |
310 | EE_Parameter.Kanalbelegung[K_POTI7] = 11; |
311 | EE_Parameter.Kanalbelegung[K_POTI8] = 12; |
311 | EE_Parameter.Kanalbelegung[K_POTI8] = 12; |
Line 365... | Line 365... | ||
365 | //SpektrumBinding(); |
365 | //SpektrumBinding(); |
366 | timer = SetDelay(2000); |
366 | timer = SetDelay(2000); |
367 | timerJeti = SetDelay(250); |
367 | timerJeti = SetDelay(250); |
368 | while (1) |
368 | while (1) |
369 | { |
369 | { |
370 | 370 | ||
371 | if(CheckDelay(timerJeti)) |
371 | if(CheckDelay(timerJeti)) |
372 | { |
372 | { |
373 | timerJeti = SetDelay(100); |
373 | timerJeti = SetDelay(100); |
374 | JetiBoxPolling(); |
374 | JetiBoxPolling(); |
375 | } |
375 | } |
376 | 376 | ||
377 | if(UpdateMotor && AdReady) // ReglerIntervall |
377 | if(UpdateMotor && AdReady) // ReglerIntervall |
378 | { |
378 | { |
379 | UpdateMotor=0; |
379 | UpdateMotor=0; |
380 | if(WinkelOut.CalcState) CalMk3Mag(); |
380 | if(WinkelOut.CalcState) CalMk3Mag(); |
381 | else MotorRegler(); |
381 | else MotorRegler(); |
382 | SendMotorData(); |
382 | SendMotorData(); |
383 | ROT_OFF; |
383 | ROT_OFF; |
384 | if(SenderOkay) SenderOkay--; |
384 | if(SenderOkay) SenderOkay--; |
385 | else TIMSK1 |= _BV(ICIE1); // enable PPM-Input |
385 | else TIMSK1 |= _BV(ICIE1); // enable PPM-Input |
386 | //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
386 | //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
387 | //if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 160 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 220) SenderOkay = 160; |
387 | //if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 160 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 220) SenderOkay = 160; |
388 | //if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 101 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 1) SenderOkay = 101; |
388 | //if(HoehenReglerAktiv && NaviDataOkay && SenderOkay < 101 && SenderOkay > 10 && FromNaviCtrl_Value.SerialDataOkay > 1) SenderOkay = 101; |
389 | //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
389 | //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
390 | if(NaviDataOkay) |
- | |
391 | { |
- | |
392 | if(--NaviDataOkay == 0) |
- | |
393 | { |
- | |
394 | GPS_Nick = 0; |
- | |
395 | GPS_Roll = 0; |
- | |
396 | } |
- | |
397 | } |
- | |
398 | 390 | ||
399 | if(!--I2CTimeout || MissingMotor) |
391 | if(!--I2CTimeout || MissingMotor) |
400 | { |
392 | { |
401 | if(!I2CTimeout) |
393 | if(!I2CTimeout) |
402 | { |
394 | { |
403 | i2c_reset(); |
395 | i2c_reset(); |
Line 412... | Line 404... | ||
412 | } |
404 | } |
413 | else |
405 | else |
414 | { |
406 | { |
415 | ROT_OFF; |
407 | ROT_OFF; |
416 | } |
408 | } |
417 | 409 | ||
418 | if(SIO_DEBUG && (!UpdateMotor || !MotorenEin)) |
410 | if(SIO_DEBUG && (!UpdateMotor || !MotorenEin)) |
419 | { |
411 | { |
420 | DatenUebertragung(); |
412 | DatenUebertragung(); |
421 | BearbeiteRxDaten(); |
413 | BearbeiteRxDaten(); |
422 | } |
414 | } |
423 | else BearbeiteRxDaten(); |
415 | else BearbeiteRxDaten(); |
424 | 416 | ||
425 | 417 | ||
426 | if(CheckDelay(timer)) |
418 | if(CheckDelay(timer)) |
427 | { |
419 | { |
428 | 420 | ||
429 | timer += 20; |
421 | timer += 20; // 20 ms interval |
430 | - | ||
431 | - | ||
432 | 422 | ||
433 | if(PcZugriff) PcZugriff--; |
423 | if(PcZugriff) PcZugriff--; |
434 | else |
424 | else |
435 | { |
425 | { |
436 | ExternControl.Config = 0; |
426 | ExternControl.Config = 0; |
437 | ExternStickNick = 0; |
427 | ExternStickNick = 0; |
438 | ExternStickRoll = 0; |
428 | ExternStickRoll = 0; |
439 | ExternStickGier = 0; |
429 | ExternStickGier = 0; |
440 | if(BeepMuster == 0xffff && SenderOkay == 0) |
430 | if(BeepMuster == 0xffff && SenderOkay == 0) |
441 | { |
431 | { |
442 | beeptime = 15000; |
432 | beeptime = 15000; |
443 | BeepMuster = 0x0c00; |
433 | BeepMuster = 0x0c00; |
- | 434 | } |
|
- | 435 | } |
|
- | 436 | if(NaviDataOkay) |
|
- | 437 | { |
|
- | 438 | NaviDataOkay--; |
|
- | 439 | FCFlags &= ~FCFLAG_SPI_RX_ERR; |
|
- | 440 | } |
|
- | 441 | else |
|
- | 442 | { |
|
444 | } |
443 | GPS_Nick = 0; |
445 | } |
444 | GPS_Roll = 0; |
- | 445 | FCFlags |= FCFLAG_SPI_RX_ERR; |
|
- | 446 | } |
|
446 | if(UBat < BattLowVoltageWarning) |
447 | if(UBat < BattLowVoltageWarning) |
447 | { |
448 | { |
448 | MikroKopterFlags |= FLAG_LOWBAT; |
449 | FCFlags |= FCFLAG_LOWBAT; |
449 | if(BeepMuster == 0xffff) |
450 | if(BeepMuster == 0xffff) |
450 | { |
451 | { |
451 | beeptime = 6000; |
452 | beeptime = 6000; |
452 | BeepMuster = 0x0300; |
453 | BeepMuster = 0x0300; |
453 | } |
454 | } |
454 | } |
455 | } |
455 | else MikroKopterFlags &= ~FLAG_LOWBAT; |
456 | else FCFlags &= ~FCFLAG_LOWBAT; |
456 | 457 | ||
457 | SPI_StartTransmitPacket(); |
458 | SPI_StartTransmitPacket(); |
458 | SendSPI = 4; |
459 | SendSPI = 4; |
459 | 460 | ||
460 | if(!MotorenEin) timer2 = 1450; // 0,5 Minuten aufrunden |
461 | if(!MotorenEin) timer2 = 1450; // 0,5 Minuten aufrunden |
461 | 462 | ||
462 | if(++timer2 == 2930) // eine Minute |
463 | if(++timer2 == 2930) // eine Minute |
463 | { |
464 | { |
464 | timer2 = 0; |
465 | timer2 = 0; |
465 | FlugMinuten++; |
466 | FlugMinuten++; |
466 | FlugMinutenGesamt++; |
467 | FlugMinutenGesamt++; |
467 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2],FlugMinuten / 256); |
468 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2],FlugMinuten / 256); |
468 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2+1],FlugMinuten % 256); |
469 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES2+1],FlugMinuten % 256); |
469 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES],FlugMinutenGesamt / 256); |
470 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES],FlugMinutenGesamt / 256); |
470 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES+1],FlugMinutenGesamt % 256); |
471 | eeprom_write_byte(&EEPromArray[EEPROM_ADR_MINUTES+1],FlugMinutenGesamt % 256); |
471 | timer = SetDelay(20); // falls "timer += 20;" mal nicht geht |
472 | timer = SetDelay(20); // falls "timer += 20;" mal nicht geht |
472 | } |
473 | } |
473 | } |
474 | } |
474 | LED_Update(); |
475 | LED_Update(); |
475 | } |
476 | } |