Subversion Repositories NaviCtrl

Rev

Rev 331 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 331 Rev 338
Line 78... Line 78...
78
//communication packets
78
//communication packets
79
FromFlightCtrl_t   FromFlightCtrl;
79
FromFlightCtrl_t   FromFlightCtrl;
80
ToFlightCtrl_t     ToFlightCtrl;
80
ToFlightCtrl_t     ToFlightCtrl;
81
#define SPI0_TIMEOUT 500 // 500ms
81
#define SPI0_TIMEOUT 500 // 500ms
82
volatile u32 SPI0_Timeout = 0;
82
volatile u32 SPI0_Timeout = 0;
-
 
83
u8 Logging_FCStatusFlags1 = 0,Logging_FCStatusFlags2 = 0;
Line 83... Line 84...
83
 
84
 
84
// tx packet buffer
85
// tx packet buffer
85
#define SPI_TXBUFFER_LEN (2 + sizeof(ToFlightCtrl)) // 2 bytes at start are for synchronization
86
#define SPI_TXBUFFER_LEN (2 + sizeof(ToFlightCtrl)) // 2 bytes at start are for synchronization
86
volatile u8 SPI_TxBuffer[SPI_TXBUFFER_LEN];
87
volatile u8 SPI_TxBuffer[SPI_TXBUFFER_LEN];
Line 110... Line 111...
110
u8  FromFC_VarioCharacter = ' ';
111
u8  FromFC_VarioCharacter = ' ';
111
u8 GPS_Aid_StickMultiplikator = 0;
112
u8 GPS_Aid_StickMultiplikator = 0;
112
u8 NC_GPS_ModeCharacter = ' ';
113
u8 NC_GPS_ModeCharacter = ' ';
113
u8 FCCalibActive = 0;
114
u8 FCCalibActive = 0;
114
u8 FC_is_Calibrated = 0;
115
u8 FC_is_Calibrated = 0;
115
 
-
 
-
 
116
u8 MotorCurrent[12];
-
 
117
u8 MotorTemperature[12];
-
 
118
u8 BL_MinOfMaxPWM;  // indication if all BL-controllers run on full power
-
 
119
u32 FC_I2C_ErrorConter;
116
SPI_Version_t FC_Version;
120
SPI_Version_t FC_Version;
Line 117... Line 121...
117
 
121
 
118
//--------------------------------------------------------------
122
//--------------------------------------------------------------
119
void SSP0_IRQHandler(void)
123
void SSP0_IRQHandler(void)
Line 336... Line 340...
336
                                ToFlightCtrl.Param.Byte[0] = VERSION_MAJOR;
340
                                ToFlightCtrl.Param.Byte[0] = VERSION_MAJOR;
337
                                ToFlightCtrl.Param.Byte[1] = VERSION_MINOR;
341
                                ToFlightCtrl.Param.Byte[1] = VERSION_MINOR;
338
                                ToFlightCtrl.Param.Byte[2] = VERSION_PATCH;
342
                                ToFlightCtrl.Param.Byte[2] = VERSION_PATCH;
339
                                ToFlightCtrl.Param.Byte[3] = FC_SPI_COMPATIBLE;
343
                                ToFlightCtrl.Param.Byte[3] = FC_SPI_COMPATIBLE;
340
                                ToFlightCtrl.Param.Byte[4] = Version_HW;
344
                                ToFlightCtrl.Param.Byte[4] = Version_HW;
341
                                ToFlightCtrl.Param.Byte[5] = DebugOut.Status[0];
345
                                ToFlightCtrl.Param.Byte[5] = DebugOut.StatusGreen;
342
                                ToFlightCtrl.Param.Byte[6] = DebugOut.Status[1];
346
                                ToFlightCtrl.Param.Byte[6] = DebugOut.StatusRed;
343
                                ToFlightCtrl.Param.Byte[7] = ErrorCode;
347
                                ToFlightCtrl.Param.Byte[7] = ErrorCode;
344
                                ToFlightCtrl.Param.Byte[8] = NC_GPS_ModeCharacter;
348
                                ToFlightCtrl.Param.Byte[8] = NC_GPS_ModeCharacter;
345
                                ToFlightCtrl.Param.Byte[9] = SerialLinkOkay;
349
                                ToFlightCtrl.Param.Byte[9] = SerialLinkOkay;
346
                                break;
350
                                break;
Line 526... Line 530...
526
                                if(FC.StatusFlags & FC_STATUS_CALIBRATE && !FCCalibActive)
530
                                if(FC.StatusFlags & FC_STATUS_CALIBRATE && !FCCalibActive)
527
                                {
531
                                {
528
                                        HeadFreeStartAngle = Compass_Heading * 10;
532
                                        HeadFreeStartAngle = Compass_Heading * 10;
529
                                        Compass_Init();
533
                                        Compass_Init();
530
                                        FCCalibActive = 10;
534
                                        FCCalibActive = 10;
-
 
535
                                        FC_is_Calibrated = 0;
531
                                }
536
                                }
532
                                else
537
                                else
533
                                {
538
                                {
534
                                        if(FCCalibActive) if(--FCCalibActive == 0) FC_is_Calibrated = 1;
539
                                        if(FCCalibActive) if(--FCCalibActive == 0) FC_is_Calibrated = 1;
535
                                }
540
                                }
Line 557... Line 562...
557
                                Parameter.ActiveSetting = FromFlightCtrl.Param.Byte[9];
562
                                Parameter.ActiveSetting = FromFlightCtrl.Param.Byte[9];
558
                                DebugOut.Analog[5] = FC.StatusFlags;
563
                                DebugOut.Analog[5] = FC.StatusFlags;
559
                                FC.StatusFlags2 = FromFlightCtrl.Param.Byte[11];
564
                                FC.StatusFlags2 = FromFlightCtrl.Param.Byte[11];
560
                                NaviData.FCStatusFlags = FC.StatusFlags;
565
                                NaviData.FCStatusFlags = FC.StatusFlags;
561
                                NaviData.FCStatusFlags2 = FC.StatusFlags2;
566
                                NaviData.FCStatusFlags2 = FC.StatusFlags2;
-
 
567
                                Logging_FCStatusFlags1 |= FC.StatusFlags;
-
 
568
                                Logging_FCStatusFlags2 |= FC.StatusFlags2;
562
                                Parameter.ComingHomeAltitude = FromFlightCtrl.Param.Byte[10];
569
                                Parameter.ComingHomeAltitude = FromFlightCtrl.Param.Byte[10];
563
                                break;
570
                                break;
Line 564... Line 571...
564
 
571
 
565
                        case SPI_FCCMD_ACCU:
572
                        case SPI_FCCMD_ACCU:
Line 568... Line 575...
568
                                FC.BAT_Voltage = FromFlightCtrl.Param.Byte[4];
575
                                FC.BAT_Voltage = FromFlightCtrl.Param.Byte[4];
569
                                Parameter.LowVoltageWarning = FromFlightCtrl.Param.Byte[5];
576
                                Parameter.LowVoltageWarning = FromFlightCtrl.Param.Byte[5];
570
                                FromFC_VarioCharacter = FromFlightCtrl.Param.Byte[6];
577
                                FromFC_VarioCharacter = FromFlightCtrl.Param.Byte[6];
571
                                Parameter.GlobalConfig = FromFlightCtrl.Param.Byte[7];
578
                                Parameter.GlobalConfig = FromFlightCtrl.Param.Byte[7];
572
                                Parameter.ExtraConfig = FromFlightCtrl.Param.Byte[8];
579
                                Parameter.ExtraConfig = FromFlightCtrl.Param.Byte[8];
-
 
580
                                MotorTemperature[FromFlightCtrl.Param.Byte[9]] = FromFlightCtrl.Param.Byte[10];
-
 
581
                                MotorCurrent[FromFlightCtrl.Param.Byte[9]] = FromFlightCtrl.Param.Byte[11];
573
                                if(FromFC_VarioCharacter == '+' || FromFC_VarioCharacter == '-') // manual setpoint clears the NC-Parameter command
582
                                if(FromFC_VarioCharacter == '+' || FromFC_VarioCharacter == '-') // manual setpoint clears the NC-Parameter command
574
                                 {
583
                                 {
575
                                  NCParams_ClearValue(NCPARAMS_ALTITUDE_RATE);
584
                                  NCParams_ClearValue(NCPARAMS_ALTITUDE_RATE);
576
                                 }
585
                                 }
577
                                NaviData.UBat = FC.BAT_Voltage;
586
                                NaviData.UBat = FC.BAT_Voltage;
Line 641... Line 650...
641
                                ServoParams.NickMax             = FromFlightCtrl.Param.Byte[5];
650
                                ServoParams.NickMax             = FromFlightCtrl.Param.Byte[5];
642
                                ServoParams.RollControl = FromFlightCtrl.Param.Byte[6];
651
                                ServoParams.RollControl = FromFlightCtrl.Param.Byte[6];
643
                                ServoParams.RollComp    = FromFlightCtrl.Param.Byte[7];
652
                                ServoParams.RollComp    = FromFlightCtrl.Param.Byte[7];
644
                                ServoParams.RollMin             = FromFlightCtrl.Param.Byte[8];
653
                                ServoParams.RollMin             = FromFlightCtrl.Param.Byte[8];
645
                                ServoParams.RollMax             = FromFlightCtrl.Param.Byte[9];
654
                                ServoParams.RollMax             = FromFlightCtrl.Param.Byte[9];
-
 
655
                                BL_MinOfMaxPWM = FromFlightCtrl.Param.Byte[10];
646
                                break;
656
                                break;
Line 647... Line 657...
647
 
657
 
648
                        case SPI_FCCMD_VERSION:
658
                        case SPI_FCCMD_VERSION:
649
                                FC_Version.Major                = FromFlightCtrl.Param.Byte[0];
659
                                FC_Version.Major                = FromFlightCtrl.Param.Byte[0];
Line 655... Line 665...
655
                                FC.Error[1]                     |= FromFlightCtrl.Param.Byte[6];
665
                                FC.Error[1]                     |= FromFlightCtrl.Param.Byte[6];
656
                                FC.Error[2]                     |= FromFlightCtrl.Param.Byte[7];
666
                                FC.Error[2]                     |= FromFlightCtrl.Param.Byte[7];
657
                                FC.Error[3]                     |= FromFlightCtrl.Param.Byte[8];
667
                                FC.Error[3]                     |= FromFlightCtrl.Param.Byte[8];
658
                                FC.Error[4]                     |= FromFlightCtrl.Param.Byte[9];
668
                                FC.Error[4]                     |= FromFlightCtrl.Param.Byte[9];
659
                                Parameter.OrientationAngle = FromFlightCtrl.Param.Byte[10];
669
                                Parameter.OrientationAngle = FromFlightCtrl.Param.Byte[10];
660
                                DebugOut.Status[0] |= 0x01; // status of FC Present
670
                                DebugOut.StatusGreen |= AMPEL_FC; // status of FC Present
661
                                DebugOut.Status[0] |= 0x02; // status of BL Present
671
                                DebugOut.StatusGreen |= AMPEL_BL; // status of BL Present
662
                                if(FC.Error[0] || FC.Error[1] || FC.Error[2] || FC.Error[3] || FC.Error[4]) DebugOut.Status[1] |= 0x01;
672
                                if(FC.Error[0] || FC.Error[1] || FC.Error[2] || FC.Error[3] || FC.Error[4]) DebugOut.StatusRed |= AMPEL_FC;
663
                                else DebugOut.Status[1] &= ~0x01;
673
                                else DebugOut.StatusRed &= ~AMPEL_FC;
664
                                break;
674
                                break;
665
                        default:
675
                        default:
666
                                break;
676
                                break;
667
                }
677
                }