Rev 487 | Rev 500 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 487 | Rev 489 | ||
---|---|---|---|
Line 54... | Line 54... | ||
54 | // + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
54 | // + Note: For information on license extensions (e.g. commercial use), please contact us at info(@)hisystems.de. |
55 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
55 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
Line 56... | Line 56... | ||
56 | 56 | ||
57 | #include <string.h> |
57 | #include <string.h> |
- | 58 | #include <math.h> |
|
58 | #include <math.h> |
59 | #include <stdlib.h> |
59 | #include "91x_lib.h" |
60 | #include "91x_lib.h" |
60 | #include "led.h" |
61 | #include "led.h" |
61 | #include "gps.h" |
62 | #include "gps.h" |
62 | #include "uart1.h" |
63 | #include "uart1.h" |
63 | #include "spi_slave.h" |
64 | #include "spi_slave.h" |
64 | #include "compass.h" |
65 | #include "compass.h" |
65 | #include "timer1.h" |
66 | #include "timer1.h" |
66 | #include "timer2.h" |
67 | #include "timer2.h" |
67 | #include "config.h" |
68 | #include "config.h" |
68 | #include "main.h" |
- | |
69 | #include "compass.h" |
69 | #include "main.h" |
70 | #include "params.h" |
- | |
71 | #include "stdlib.h" |
70 | #include "params.h" |
72 | #include "settings.h" |
- | |
Line 73... | Line 71... | ||
73 | #include "ncmag.h" |
71 | #include "settings.h" |
74 | 72 | ||
75 | #define SPI_RXSYNCBYTE1 0xAA |
73 | #define SPI_RXSYNCBYTE1 0xAA |
76 | #define SPI_RXSYNCBYTE2 0x83 |
74 | #define SPI_RXSYNCBYTE2 0x83 |
Line 124... | Line 122... | ||
124 | u32 FC_I2C_ErrorConter; |
122 | u32 FC_I2C_ErrorConter; |
125 | SPI_Version_t FC_Version; |
123 | SPI_Version_t FC_Version; |
126 | s16 POI_KameraNick = 0; |
124 | s16 POI_KameraNick = 0; |
127 | u8 NC_Wait_for_LED = 0; |
125 | u8 NC_Wait_for_LED = 0; |
128 | s16 GyroCompassCorrected = 0; // corrected with the magnetic declination |
126 | s16 GyroCompassCorrected = 0; // corrected with the magnetic declination |
129 | u8 FromFC_LowVoltageHomeActive = 0; |
- | |
Line 130... | Line 127... | ||
130 | 127 | ||
131 | //-------------------------------------------------------------- |
128 | //-------------------------------------------------------------- |
132 | void SSP0_IRQHandler(void) |
129 | void SSP0_IRQHandler(void) |
133 | { |
130 | { |
Line 590... | Line 587... | ||
590 | if(FCCalibActive) |
587 | if(FCCalibActive) |
591 | { |
588 | { |
592 | if(--FCCalibActive == 0) |
589 | if(--FCCalibActive == 0) |
593 | { |
590 | { |
594 | FC_is_Calibrated = 1; |
591 | FC_is_Calibrated = 1; |
595 | ExtCompassOrientation = GetExtCompassOrientation(); |
592 | Compass_Check(); |
596 | if(ExtCompassOrientation != Calibration.Version / 16) NCMAG_IsCalibrated = 0; |
- | |
597 | } |
593 | } |
598 | } |
594 | } |
599 | } |
595 | } |
600 | if(FC.StatusFlags & FC_STATUS_START) |
596 | if(FC.StatusFlags & FC_STATUS_START) |
601 | { |
597 | { |
Line 613... | Line 609... | ||
613 | } |
609 | } |
614 | else // Ansonsten die aktuelle Richtung übernehmen |
610 | else // Ansonsten die aktuelle Richtung übernehmen |
615 | HeadFreeStartAngle = GyroCompassCorrected; // in 0.1° |
611 | HeadFreeStartAngle = GyroCompassCorrected; // in 0.1° |
616 | } |
612 | } |
617 | } |
613 | } |
- | 614 | ||
618 | Parameter.ActiveSetting = FromFlightCtrl.Param.Byte[9]; |
615 | Parameter.ActiveSetting = FromFlightCtrl.Param.Byte[9]; |
619 | FC.BAT_Voltage = FromFlightCtrl.Param.Byte[10]; |
616 | FC.BAT_Voltage = FromFlightCtrl.Param.Byte[10]; |
620 | DebugOut.Analog[7] = FC.BAT_Voltage; |
617 | DebugOut.Analog[7] = FC.BAT_Voltage; |
621 | DebugOut.Analog[5] = FC.StatusFlags; |
618 | DebugOut.Analog[5] = FC.StatusFlags; |
622 | NaviData.FCStatusFlags = FC.StatusFlags; |
619 | NaviData.FCStatusFlags = FC.StatusFlags; |
Line 672... | Line 669... | ||
672 | case SPI_FCCMD_PARAMETER2: |
669 | case SPI_FCCMD_PARAMETER2: |
673 | CHK_POTI_MM(Parameter.NaviOut1Parameter,FromFlightCtrl.Param.Byte[0],0,255); |
670 | CHK_POTI_MM(Parameter.NaviOut1Parameter,FromFlightCtrl.Param.Byte[0],0,255); |
674 | if(FromFlightCtrl.Param.Byte[1]) FC.FromFC_SpeakHoTT = FromFlightCtrl.Param.Byte[1]; // will be cleared in the SD-Logging |
671 | if(FromFlightCtrl.Param.Byte[1]) FC.FromFC_SpeakHoTT = FromFlightCtrl.Param.Byte[1]; // will be cleared in the SD-Logging |
675 | Parameter.FromFC_LandingSpeed = FromFlightCtrl.Param.Byte[2]; |
672 | Parameter.FromFC_LandingSpeed = FromFlightCtrl.Param.Byte[2]; |
676 | Parameter.ComingHomeAltitude = FromFlightCtrl.Param.Byte[3]; |
673 | Parameter.ComingHomeAltitude = FromFlightCtrl.Param.Byte[3]; |
677 | FromFC_LowVoltageHomeActive = FromFlightCtrl.Param.Byte[4]; |
674 | Parameter.FromFC_LowVoltageHomeActive = FromFlightCtrl.Param.Byte[4]; |
678 | break; |
675 | break; |
679 | case SPI_FCCMD_STICK: |
676 | case SPI_FCCMD_STICK: |
680 | FC.StickGas = FromFlightCtrl.Param.sByte[0]; |
677 | FC.StickGas = FromFlightCtrl.Param.sByte[0]; |
681 | FC.StickYaw = FromFlightCtrl.Param.sByte[1]; |
678 | FC.StickYaw = FromFlightCtrl.Param.sByte[1]; |
682 | FC.StickRoll = FromFlightCtrl.Param.sByte[2]; |
679 | FC.StickRoll = FromFlightCtrl.Param.sByte[2]; |
Line 742... | Line 739... | ||
742 | FC.Error[0] |= FromFlightCtrl.Param.Byte[5]; |
739 | FC.Error[0] |= FromFlightCtrl.Param.Byte[5]; |
743 | FC.Error[1] |= FromFlightCtrl.Param.Byte[6]; |
740 | FC.Error[1] |= FromFlightCtrl.Param.Byte[6]; |
744 | if(FromFlightCtrl.Param.Byte[7] >= 68 && FromFlightCtrl.Param.Byte[7] <= 188) |
741 | if(FromFlightCtrl.Param.Byte[7] >= 68 && FromFlightCtrl.Param.Byte[7] <= 188) |
745 | { |
742 | { |
746 | FC.FromFC_DisableDeclination = 1; |
743 | FC.FromFC_DisableDeclination = 1; |
747 | FC.FromFC_CompassOffset = 10 * (signed char) ((unsigned char) FromFlightCtrl.Param.Byte[7] - 128); |
744 | FC.FromFC_CompassOffset = 10 * (s8) (FromFlightCtrl.Param.Byte[7] - 128); |
748 | GeoMagDec = 0; |
745 | GeoMagDec = 0; |
749 | } |
746 | } |
750 | else |
747 | else |
751 | { |
748 | { |
752 | FC.FromFC_DisableDeclination = 0; |
749 | FC.FromFC_DisableDeclination = 0; |
753 | FC.FromFC_CompassOffset = 10 * (signed char) FromFlightCtrl.Param.Byte[7]; |
750 | FC.FromFC_CompassOffset = 10 * FromFlightCtrl.Param.sByte[7]; |
754 | } |
751 | } |
755 | Parameter.GlobalConfig = FromFlightCtrl.Param.Byte[8]; |
752 | Parameter.GlobalConfig = FromFlightCtrl.Param.Byte[8]; |
756 | Parameter.ExtraConfig = FromFlightCtrl.Param.Byte[9]; |
753 | Parameter.ExtraConfig = FromFlightCtrl.Param.Byte[9]; |
757 | Parameter.OrientationAngle = FromFlightCtrl.Param.Byte[10]; |
754 | Parameter.OrientationAngle = FromFlightCtrl.Param.Byte[10]; |
758 | Parameter.GlobalConfig3 = FromFlightCtrl.Param.Byte[11]; |
755 | Parameter.GlobalConfig3 = FromFlightCtrl.Param.Byte[11]; |
Line 818... | Line 815... | ||
818 | SPI0_UpdateBuffer(); |
815 | SPI0_UpdateBuffer(); |
819 | if (FC_Version.Major != 0xFF) break; |
816 | if (FC_Version.Major != 0xFF) break; |
820 | }while (!CheckDelay(timeout)); |
817 | }while (!CheckDelay(timeout)); |
821 | UART1_PutString("."); |
818 | UART1_PutString("."); |
822 | repeat++; |
819 | repeat++; |
823 | // FCCalibActive = 1; |
820 | FCCalibActive = 1; |
824 | }while((FC_Version.Major == 0xFF) && (repeat < 40)); // 40*250ms = 10s |
821 | }while((FC_Version.Major == 0xFF) && (repeat < 40)); // 40*250ms = 10s |
825 | // if we got it |
822 | // if we got it |
826 | if (FC_Version.Major != 0xFF) |
823 | if (FC_Version.Major != 0xFF) |
827 | { |
824 | { |
828 | sprintf(msg, " FC V%d.%02d%c HW:%d.%d", FC_Version.Major, FC_Version.Minor, 'a'+FC_Version.Patch, FC_Version.Hardware/10,FC_Version.Hardware%10); |
825 | sprintf(msg, " FC V%d.%d%c HW:%d.%02d", FC_Version.Major, FC_Version.Minor, 'a'+FC_Version.Patch, FC_Version.Hardware/10,FC_Version.Hardware%10); |
829 | UART1_PutString(msg); |
826 | UART1_PutString(msg); |
830 | } |
827 | } |
831 | else UART1_PutString("\n\r not found!"); |
828 | else UART1_PutString("\n\r not found!"); |
832 | } |
829 | } |
Line -... | Line 830... | ||
- | 830 | ||
- | 831 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 832 | // + extended Current measurement -> 200 = 20A 201 = 21A 255 = 75A (20+55) |
|
- | 833 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
- | 834 | u16 BL3_Current(u8 who) // in 0,1A |
|
- | 835 | { |
|
- | 836 | if(Motor[who].Current <= 200) return((u16) Motor[who].Current); |
|
- | 837 | else |
|
- | 838 | { |
|
- | 839 | if(Motor_Version[who] & MOTOR_STATE_BL30) return(200 + 10 * (u16) (Motor[who].Current - 200)); |
|
- | 840 | else return((u16) Motor[who].Current); |
|
- | 841 | } |