Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 326 → Rev 327

/trunk/main.c
209,19 → 209,19
else if(FC.Error[0] & FC_ERROR0_ACC_TOP)
{
LED_RED_ON;
sprintf(ErrorMSG,"ERR: FC Z-ACC");
sprintf(ErrorMSG,"ERR:FC Z-ACC");
ErrorCode = 15;
}
else if(FC.Error[0] & FC_ERROR0_PRESSURE)
{
LED_RED_ON;
sprintf(ErrorMSG,"ERR: Pressure sensor");
sprintf(ErrorMSG,"ERR:Pressure sensor");
ErrorCode = 16;
}
else if(FC.Error[1] & FC_ERROR1_I2C)
{
LED_RED_ON;
sprintf(ErrorMSG,"ERR: FC I2C");
sprintf(ErrorMSG,"ERR:I2C FC to BL");
ErrorCode = 17;
}
else if(FC.Error[1] & FC_ERROR1_BL_MISSING)
395,12 → 395,15
UART2_TransmitTxData(); // send answer
USB_TransmitTxData(); // send answer
SPI0_UpdateBuffer(); // handle new SPI Data
 
// ---------------- Error Check Timing ----------------------------
if(CheckDelay(TimerCheckError))
{
TimerCheckError = SetDelay(1000);
if(CheckDelay(SPI0_Timeout)) GPS_Navigation(&GPSData, &(ToFlightCtrl.GPSStick)); // process the GPS data even if the FC is not connected
CheckErrors();
if(CheckDelay(SPI0_Timeout) && (DebugUART == UART1)) GPS_Navigation(&GPSData, &(ToFlightCtrl.GPSStick)); // process the GPS data even if the FC is not connected
if(!CheckDelay(SPI0_Timeout) || (DebugUART == UART1)) CheckErrors();
if(FC.StatusFlags & FC_STATUS_FLY) NaviData.FlyingTime++; // we want to count the battery-time
// else NaviData.FlyingTime = 0; // not the time per flight
if(SerialLinkOkay) SerialLinkOkay--;
408,8 → 411,10
else NCFlags &= ~NC_FLAG_NOSERIALLINK;
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
 
/*
// test
if(CheckDelay(ftimer))
/trunk/main.h
14,7 → 14,7
 
#define VERSION_MAJOR 0
#define VERSION_MINOR 25
#define VERSION_PATCH 4
#define VERSION_PATCH 5
// 0 = A
// 1 = B
// 2 = C
35,7 → 35,7
#define VERSION_SERIAL_MINOR 0
 
#ifndef FOLLOW_ME
#define FC_SPI_COMPATIBLE 21
#define FC_SPI_COMPATIBLE 22
#else
#define FC_SPI_COMPATIBLE 0xFF
#endif
104,7 → 104,7
#define CFG_3_3V_REFERENCE 0x08
#define CFG_NO_RCOFF_BEEPING 0x10
#define CFG_GPS_AID 0x20
#define CFG_LEARNABLE_CAREFREE 0x40
#define CFG_TEACHABLE_CAREFREE 0x40
 
 
#define LIMIT_MIN(value, min) {if(value <= min) value = min;}
111,6 → 111,16
#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;}
 
 
#define Poti1 FC.Poti[0]
#define Poti2 FC.Poti[1]
#define Poti3 FC.Poti[2]
#define Poti4 FC.Poti[3]
#define Poti5 FC.Poti[4]
#define Poti6 FC.Poti[5]
#define Poti7 FC.Poti[6]
#define Poti8 FC.Poti[7]
 
extern u16 BeepTime;
extern u8 NCFlags;
extern u8 ClearFCStatusFlags;
117,7 → 127,6
void Interrupt_Init(void);
extern s16 GeoMagDec;
 
 
typedef struct
{
u8 ActiveSetting;
142,6 → 151,7
u8 NaviStickThreshold;
u8 NaviOperatingRadius;
u8 NaviWindCorrection;
u8 NaviAccCompensation;
u8 NaviSpeedCompensation;
u8 LowVoltageWarning;
u8 NaviAngleLimitation;
159,10 → 169,6
s8 StickYaw;
s8 StickGas;
u8 Poti[8];
u8 Poti5;
u8 Poti6;
u8 Poti7;
u8 Poti8;
u8 RC_Quality;
u8 RC_RSSI;
u8 BAT_Voltage;
/trunk/menu.c
244,7 → 244,7
LCD_printfxy(0,0,"Stick TS: %3i", Parameter.NaviStickThreshold);
LCD_printfxy(0,1,"MaxRadius: %3i m", NaviData.OperatingRadius);
LCD_printfxy(0,2,"WindCorr: %3i", Parameter.NaviWindCorrection);
LCD_printfxy(0,3,"SpeedComp: %3i", Parameter.NaviSpeedCompensation);
LCD_printfxy(0,3,"AccComp: %3i", Parameter.NaviSpeedCompensation);
break;
case 6: // Navi Params 3 from FC
LCD_printfxy(0,0,"Angle-Limit: %3i", Parameter.NaviAngleLimitation);
/trunk/spi_slave.c
286,8 → 286,8
ToFlightCtrl.CompassHeading = Compass_Heading;
DebugOut.Analog[10] = ToFlightCtrl.CompassHeading;
if(ToFlightCtrl.CompassHeading >= 0) ToFlightCtrl.CompassHeading = (360 + ToFlightCtrl.CompassHeading + FromFlightCtrl.GyroYaw / 12) % 360;
ToFlightCtrl.MagVecX = MagVector.X;
ToFlightCtrl.MagVecY = MagVector.Y;
// ToFlightCtrl.MagVecX = MagVector.X;
// ToFlightCtrl.MagVecY = MagVector.Y;
ToFlightCtrl.MagVecZ = MagVector.Z;
ToFlightCtrl.NCStatus = 0;
// cycle spi commands
408,9 → 408,10
{
FCCalibActive = 0;
}
if(FC.StatusFlags & FC_STATUS_START) if(Compass_Heading != -1) HeadFreeStartAngle = Compass_Heading * 10; else HeadFreeStartAngle = FromFlightCtrl.GyroHeading;
if(FC.StatusFlags & FC_STATUS_START)
{ if(Compass_Heading != -1) HeadFreeStartAngle = Compass_Heading * 10; else HeadFreeStartAngle = FromFlightCtrl.GyroHeading; }
 
if((Parameter.ExtraConfig & CFG_LEARNABLE_CAREFREE))
if((Parameter.ExtraConfig & CFG_TEACHABLE_CAREFREE))
{
if(!(FC.StatusFlags2 & FC_STATUS2_CAREFREE)) // CF ist jetzt ausgeschaltet -> neue Richtung lernen
{
464,7 → 465,7
Parameter.NaviStickThreshold = FromFlightCtrl.Param.Byte[7];
CHK_POTI_MM(Parameter.NaviOperatingRadius,FromFlightCtrl.Param.Byte[8],0,255);
CHK_POTI_MM(Parameter.NaviWindCorrection,FromFlightCtrl.Param.Byte[9],0,255);
CHK_POTI_MM(Parameter.NaviSpeedCompensation,FromFlightCtrl.Param.Byte[10],0,255);
CHK_POTI_MM(Parameter.NaviAccCompensation,FromFlightCtrl.Param.Byte[10],0,255);
CHK_POTI_MM(Parameter.NaviAngleLimitation,FromFlightCtrl.Param.Byte[11],0,255);
break;
 
/trunk/spi_slave.h
62,8 → 62,8
u8 Command;
GPS_Stick_t GPSStick;
s16 CompassHeading;
s16 MagVecX;
s16 MagVecY;
s16 AccErrorN; // s16 MagVecX;
s16 AccErrorR; // s16 MagVecY;
s16 MagVecZ;
s16 NCStatus;
u16 BeepTime;
/trunk/uart1.c
152,7 → 152,7
"16 ",// "Kalman_K ",
"ACC_Speed_N ",
"ACC_Speed_E ",
"Speed_z ",// "GPS ACC ",
"Speed_z ",
"20 ",//20
"N_Speed ",
"E_Speed ",