Rev 587 | Rev 598 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 587 | Rev 588 | ||
---|---|---|---|
Line 350... | Line 350... | ||
350 | case SPI_NCCMD_KALMAN: // wird am häufigsten betätigt |
350 | case SPI_NCCMD_KALMAN: // wird am häufigsten betätigt |
351 | ToFlightCtrl.Param.sByte[0] = (s8) Kalman_K; |
351 | ToFlightCtrl.Param.sByte[0] = (s8) Kalman_K; |
352 | ToFlightCtrl.Param.sByte[1] = (s8) Kalman_MaxFusion; |
352 | ToFlightCtrl.Param.sByte[1] = (s8) Kalman_MaxFusion; |
353 | ToFlightCtrl.Param.sByte[2] = (s8) Kalman_MaxDrift; |
353 | ToFlightCtrl.Param.sByte[2] = (s8) Kalman_MaxDrift; |
354 | ToFlightCtrl.Param.Byte[3] = (u8) Kalman_Kompass; |
354 | ToFlightCtrl.Param.Byte[3] = (u8) Kalman_Kompass; |
355 | ToFlightCtrl.Param.sByte[4] = (s8) ToFcGpsZ; |
355 | ToFlightCtrl.Param.Byte[4] = 0; // siehe bitcodiert unten |
356 | ToFlightCtrl.Param.Byte[5] = (s8) ToFC_Rotate_C; |
356 | ToFlightCtrl.Param.Byte[5] = (s8) ToFC_Rotate_C; |
357 | ToFlightCtrl.Param.Byte[6] = (s8) ToFC_Rotate_S; |
357 | ToFlightCtrl.Param.Byte[6] = (s8) ToFC_Rotate_S; |
358 | ToFlightCtrl.Param.Byte[7] = GPS_Aid_StickMultiplikator; |
358 | ToFlightCtrl.Param.Byte[7] = GPS_Aid_StickMultiplikator; |
359 | if(CAM_Orientation.UpdateMask & CAM_UPDATE_AZIMUTH) |
359 | if(CAM_Orientation.UpdateMask & CAM_UPDATE_AZIMUTH) |
360 | { |
360 | { |
361 | // if(CAM_Orientation.Azimuth != -1) ToFlightCtrl.Param.sInt[4] = (CAM_Orientation.Azimuth + (3*360) - (FC.FromFC_CompassOffset / 10 + GeoMagDec/10 + Parameter.OrientationAngle * 15)) % 360; // the FC uses the uncorrected comnpass value |
361 | // if(CAM_Orientation.Azimuth != -1) ToFlightCtrl.Param.sInt[4] = (CAM_Orientation.Azimuth + (3*360) - (FC.FromFC_CompassOffset / 10 + GeoMagDec/10 + Parameter.OrientationAngle * 15)) % 360; // the FC uses the uncorrected comnpass value |
362 | if(CAM_Orientation.Azimuth != -1) ToFlightCtrl.Param.sInt[4] = (CAM_Orientation.Azimuth + (3*360) - (FC.FromFC_CompassOffset / 10 + GeoMagDec/10 + Parameter.CamOrientation * 15)) % 360; // the FC uses the uncorrected comnpass value |
362 | if(CAM_Orientation.Azimuth != -1) ToFlightCtrl.Param.sInt[4] = (CAM_Orientation.Azimuth + (3*360) - (FC.FromFC_CompassOffset / 10 + GeoMagDec/10 + Parameter.CamOrientation * 15)) % 360; // the FC uses the uncorrected comnpass value |
363 | else CAM_Orientation.Azimuth = -1; |
363 | else CAM_Orientation.Azimuth = -1; |
- | 364 | if(CAM_Orientation.UpdateMask & FORCE_AZIMUTH_ROTATION) ToFlightCtrl.Param.sByte[4] = 0x01; // allows Yawing without CareFree (Yawing at Coming Home) |
|
364 | CAM_Orientation.UpdateMask &= ~CAM_UPDATE_AZIMUTH; |
365 | CAM_Orientation.UpdateMask &= ~(CAM_UPDATE_AZIMUTH | FORCE_AZIMUTH_ROTATION); |
365 | } |
366 | } |
366 | else |
367 | else |
367 | { |
368 | { |
368 | ToFlightCtrl.Param.sInt[4] = -1; |
369 | ToFlightCtrl.Param.sInt[4] = -1; |
369 | } |
370 | } |
Line 817... | Line 818... | ||
817 | case SPI_FCCMD_SLOW3: // slow! |
818 | case SPI_FCCMD_SLOW3: // slow! |
818 | ServoParams.NickControl = FromFlightCtrl.Param.Byte[0]; |
819 | ServoParams.NickControl = FromFlightCtrl.Param.Byte[0]; |
819 | ServoParams.RollControl = FromFlightCtrl.Param.Byte[1]; |
820 | ServoParams.RollControl = FromFlightCtrl.Param.Byte[1]; |
820 | Parameter.DescendRange = FromFlightCtrl.Param.Byte[2]; |
821 | Parameter.DescendRange = FromFlightCtrl.Param.Byte[2]; |
821 | Parameter.MaximumAltitude = FromFlightCtrl.Param.Byte[3]; |
822 | Parameter.MaximumAltitude = FromFlightCtrl.Param.Byte[3]; |
822 | // 4 |
- | |
- | 823 | ServoParams.CompInvert = FromFlightCtrl.Param.Byte[4]; |
|
- | 824 | Parameter.HomeYawMode = ((ServoParams.CompInvert & 0x18) >> 3); |
|
823 | // 5 |
825 | // 5 |
824 | // 6 |
826 | // 6 |
825 | // 7 |
827 | // 7 |
826 | // 8 |
828 | // 8 |
827 | // 9 |
829 | // 9 |
Line 835... | Line 837... | ||
835 | DebugOut.Analog[0] = FromFlightCtrl.AngleNick; |
837 | DebugOut.Analog[0] = FromFlightCtrl.AngleNick; |
836 | DebugOut.Analog[1] = FromFlightCtrl.AngleRoll; |
838 | DebugOut.Analog[1] = FromFlightCtrl.AngleRoll; |
837 | DebugOut.Analog[2] = FromFlightCtrl.AccNick; |
839 | DebugOut.Analog[2] = FromFlightCtrl.AccNick; |
838 | DebugOut.Analog[3] = FromFlightCtrl.AccRoll; |
840 | DebugOut.Analog[3] = FromFlightCtrl.AccRoll; |
839 | DebugOut.Analog[11] = FromFlightCtrl.GyroHeading/10;// in deg |
841 | DebugOut.Analog[11] = FromFlightCtrl.GyroHeading/10;// in deg |
840 | Data3D.AngleNick = FromFlightCtrl.AngleNick; // in 0.1 deg |
- | |
841 | Data3D.AngleRoll = FromFlightCtrl.AngleRoll; // in 0.1 deg |
- | |
842 | Data3D.Heading = FromFlightCtrl.GyroHeading; // in 0.1 deg |
- | |
843 | // every time we got new data from the FC via SPI call the navigation routine |
842 | // every time we got new data from the FC via SPI call the navigation routine |
844 | // and update GPSStick that are returned to FC |
843 | // and update GPSStick that are returned to FC |
845 | SPI_RxBuffer_Request = 0; |
844 | SPI_RxBuffer_Request = 0; |
846 | GPS_Navigation(&GPSData, &(ToFlightCtrl.GPSStick)); |
845 | GPS_Navigation(&GPSData, &(ToFlightCtrl.GPSStick)); |
847 | ClearFCStatusFlags = 1; |
846 | ClearFCStatusFlags = 1; |