Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 319 → Rev 320

/trunk/main.c
239,10 → 239,15
else if(CheckDelay(UBX_Timeout))
{
LED_RED_ON;
sprintf(ErrorMSG,"no GPS communication ");
ErrorCode = 5;
if(!(Parameter.GlobalConfig & FC_CFG_GPS_AKTIV)) sprintf(ErrorMSG,"GPS disconnected ");
else
{
sprintf(ErrorMSG,"no GPS communication ");
UART_VersionInfo.HardwareError[0] |= NC_ERROR0_GPS_RX;
ErrorCode = 5;
}
StopNavigation = 1;
UART_VersionInfo.HardwareError[0] |= NC_ERROR0_GPS_RX;
// UBX_Timeout = SetDelay(500);
}
else if(Compass_Heading < 0)
{
395,7 → 400,7
if(SerialLinkOkay) SerialLinkOkay--;
if(SerialLinkOkay < 250 - 5) NCFlags |= NC_FLAG_NOSERIALLINK; // 5 seconds timeout for serial communication
else NCFlags &= ~NC_FLAG_NOSERIALLINK;
if(StopNavigation && (Parameter.NaviGpsModeControl >= 50)) BeepTime = 1000;
if(StopNavigation && (Parameter.NaviGpsModeControl >= 50) && (Parameter.GlobalConfig & FC_CFG_GPS_AKTIV)) BeepTime = 1000;
}
// ---------------- Logging ---------------------------------------
Logging_Update(); // could be block some time for at max. 2 seconds, therefore move time critical part of the mainloop into the ISR of timer 1
/trunk/main.h
42,7 → 42,7
 
#define MK3MAG_I2C_COMPATIBLE 3
 
// FC STATUS FLAGS
// FC.StatusFlags
#define FC_STATUS_MOTOR_RUN 0x01
#define FC_STATUS_FLY 0x02
#define FC_STATUS_CALIBRATE 0x04
52,7 → 52,7
#define FC_STATUS_VARIO_TRIM_UP 0x40
#define FC_STATUS_VARIO_TRIM_DOWN 0x80
 
// FC STATUS FLAGS2
// FC.StatusFlags2
#define FC_STATUS2_CAREFREE 0x01
#define FC_STATUS2_ALTITUDE_CONTROL 0x02
 
86,7 → 86,26
#define NCERR_FLAG_RC_SIGNAL_LOST 0x00000040
#define NCERR_FLAG_EEPROM_NOT_FOUND 0x00000080
 
// Parameter.GlobalConfig
#define FC_CFG_HOEHENREGELUNG 0x01
#define FC_CFG_HOEHEN_SCHALTER 0x02
#define FC_CFG_HEADING_HOLD 0x04
#define FC_CFG_KOMPASS_AKTIV 0x08
#define FC_CFG_KOMPASS_FIX 0x10
#define FC_CFG_GPS_AKTIV 0x20
#define FC_CFG_ACHSENKOPPLUNG_AKTIV 0x40
#define FC_CFG_DREHRATEN_BEGRENZER 0x80
 
//Parameter.ExtraConfig
#define CFG2_HEIGHT_LIMIT 0x01
#define CFG2_VARIO_BEEP 0x02
#define CFG_SENSITIVE_RC 0x04
#define CFG_3_3V_REFERENCE 0x08
#define CFG_NO_RCOFF_BEEPING 0x10
#define CFG_GPS_AID 0x20
#define CFG_LEARNABLE_CAREFREE 0x40
 
 
#define LIMIT_MIN(value, min) {if(value <= min) value = min;}
#define LIMIT_MAX(value, max) {if(value >= max) value = max;}
#define LIMIT_MIN_MAX(value, min, max) {if(value <= min) value = min; else if(value >= max) value = max;}
126,6 → 145,9
u8 LowVoltageWarning;
u8 NaviAngleLimitation;
u8 NaviPH_LoginTime;
u8 OrientationAngle;
u8 GlobalConfig;
u8 ExtraConfig;
} __attribute__((packed)) Param_t;
 
typedef struct
/trunk/menu.c
72,7 → 72,7
 
 
u8 MenuItem = 0;
u8 MaxMenuItem = 15;
u8 MaxMenuItem = 16;
 
 
 
/trunk/spi_slave.c
396,21 → 396,38
ClearFCStatusFlags = 0;
}
FC.StatusFlags |= FromFlightCtrl.Param.Byte[8];
if(FC.StatusFlags&FC_STATUS_CALIBRATE && !FCCalibActive)
if(FC.StatusFlags & FC_STATUS_CALIBRATE && !FCCalibActive)
{
Compass_Init();
FCCalibActive = 1;
HeadFreeStartAngle = FromFlightCtrl.GyroHeading;
}
else
{
FCCalibActive = 0;
}
if(FC.StatusFlags & FC_STATUS_START) HeadFreeStartAngle = FromFlightCtrl.GyroHeading;
 
if((Parameter.ExtraConfig & CFG_LEARNABLE_CAREFREE) && (NCFlags & NC_FLAG_GPS_OK))
{
if(!(FC.StatusFlags2 & FC_STATUS2_CAREFREE)) // CF ist jetzt ausgeschaltet -> neue Richtung lernen
{
if(NaviData.HomePositionDeviation.Distance > 100) // nur bei ausreichender distance
{
HeadFreeStartAngle = (10 * NaviData.HomePositionDeviation.Bearing + 1800) % 3600; // in 0.1°
}
else // Ansonsten die aktuelle Richtung übernehmen
HeadFreeStartAngle = FromFlightCtrl.GyroHeading; // in 0.1°
 
}
}
 
Parameter.ActiveSetting = FromFlightCtrl.Param.Byte[9];
DebugOut.Analog[5] = FC.StatusFlags;
FC.StatusFlags2 = FromFlightCtrl.Param.Byte[11];
NaviData.FCStatusFlags = FC.StatusFlags;
NaviData.FCStatusFlags2 = FC.StatusFlags2;
HeadFreeStartAngle = (s32) FromFlightCtrl.Param.Byte[10] * 20; // convert to 0.1°
// HeadFreeStartAngle = (s32) FromFlightCtrl.Param.Byte[10] * 20; // convert to 0.1°
break;
 
case SPI_FCCMD_ACCU:
419,11 → 436,12
FC.BAT_Voltage = FromFlightCtrl.Param.Byte[4];
Parameter.LowVoltageWarning = FromFlightCtrl.Param.Byte[5];
FromFC_VarioCharacter = FromFlightCtrl.Param.Byte[6];
Parameter.GlobalConfig = FromFlightCtrl.Param.Byte[7];
Parameter.ExtraConfig = FromFlightCtrl.Param.Byte[8];
if(FromFC_VarioCharacter == '+' || FromFC_VarioCharacter == '-') // manual setpoint clears the NC-Parameter command
{
NCParams_ClearValue(NCPARAMS_ALTITUDE_RATE);
}
 
NaviData.UBat = FC.BAT_Voltage;
NaviData.Current = FC.BAT_Current;
NaviData.UsedCapacity = FC.BAT_UsedCapacity;
506,6 → 524,7
FC.Error[2] = FromFlightCtrl.Param.Byte[7];
FC.Error[3] = FromFlightCtrl.Param.Byte[8];
FC.Error[4] = FromFlightCtrl.Param.Byte[9];
Parameter.OrientationAngle = FromFlightCtrl.Param.Byte[10];
DebugOut.Status[0] |= 0x01; // status of FC Present
DebugOut.Status[0] |= 0x02; // status of BL Present
if(FC.Error[0] || FC.Error[1] || FC.Error[2] || FC.Error[3] || FC.Error[4]) DebugOut.Status[1] |= 0x01;