Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 509 → Rev 510

/trunk/gpx.c
389,7 → 389,7
}
*/ // Compassind deg
i16_1 = FromFlightCtrl.GyroHeading / 10;
sprintf(string, "<Compass>%03d,%03d,%03d</Compass>\r\n", i16_1,ToFlightCtrl.CompassHeading,GyroCompassCorrected/10);
sprintf(string, "<Compass>%03d,%03d,%03d,%03d</Compass>\r\n", i16_1,ToFlightCtrl.CompassHeading,CompassSetpointCorrected/10,GyroCompassCorrected/10);
fputs_(string, doc->file);
// magnetic field
sprintf(string, "<MagnetField>%03d</MagnetField>\r\n",(u16) (EarthMagneticFieldFiltered/5));
/trunk/main.h
13,8 → 13,8
//-----------------------
 
#define VERSION_MAJOR 2
#define VERSION_MINOR 4
#define VERSION_PATCH 2
#define VERSION_MINOR 5
#define VERSION_PATCH 0
// 0 = A
// 1 = B
// 2 = C
36,7 → 36,7
// 18 = S
 
#ifndef FOLLOW_ME
#define FC_SPI_COMPATIBLE 62 // <------------------
#define FC_SPI_COMPATIBLE 63 // <------------------
#else
#define FC_SPI_COMPATIBLE 0xFF
#endif
/trunk/spi_slave.c
124,6 → 124,8
s16 POI_KameraNick = 0;
u8 NC_Wait_for_LED = 0;
s16 GyroCompassCorrected = 0; // corrected with the magnetic declination
s16 CompassSetpointCorrected = 0; // The compass setpoint that the FC tries to keep - corrected with the magnetic declination
s16 CompassSetpoint = 0; // in 0,1°
 
//--------------------------------------------------------------
void SSP0_IRQHandler(void)
307,7 → 309,8
VIC_ITCmd(SSP0_ITLine, DISABLE); // disable SPI interrupt
ToFlightCtrl.CompassHeading = Compass_Heading;
DebugOut.Analog[10] = ToFlightCtrl.CompassHeading;
GyroCompassCorrected = (3600 + FromFlightCtrl.GyroHeading + FC.FromFC_CompassOffset - GeoMagDec) % 3600;
//GyroCompassCorrected = (3600 + FromFlightCtrl.GyroHeading + FC.FromFC_CompassOffset - GeoMagDec) % 3600;
GyroCompassCorrected = (3600 + FromFlightCtrl.GyroHeading + FC.FromFC_CompassOffset + GeoMagDec) % 3600;
if(ToFlightCtrl.CompassHeading >= 0) ToFlightCtrl.CompassHeading = (360 + ToFlightCtrl.CompassHeading + FromFlightCtrl.GyroYaw / 12) % 360;
ToFlightCtrl.MagVecX = MagVector.X;
ToFlightCtrl.MagVecY = MagVector.Y;
594,7 → 597,8
FC.StatusFlags |= FromFlightCtrl.Param.Byte[8];
if(FC.StatusFlags & FC_STATUS_CALIBRATE && !FCCalibActive)
{
HeadFreeStartAngle = (3600 + Compass_Heading * 10 - GeoMagDec) % 3600;
// HeadFreeStartAngle = (3600 + Compass_Heading * 10 - GeoMagDec) % 3600;
HeadFreeStartAngle = (3600 + Compass_Heading * 10 + GeoMagDec) % 3600;
Compass_Init();
FCCalibActive = 10;
FC_is_Calibrated = 0;
612,8 → 616,9
}
if(FC.StatusFlags & FC_STATUS_START)
{
if(Compass_Heading != -1) HeadFreeStartAngle = (3600 + Compass_Heading * 10 - GeoMagDec) % 3600; else
HeadFreeStartAngle = GyroCompassCorrected;
// if(Compass_Heading != -1) HeadFreeStartAngle = (3600 + Compass_Heading * 10 - GeoMagDec) % 3600; else
if(Compass_Heading != -1) HeadFreeStartAngle = (3600 + Compass_Heading * 10 + GeoMagDec) % 3600;
else HeadFreeStartAngle = GyroCompassCorrected;
}
 
if((Parameter.ExtraConfig & CFG_TEACHABLE_CAREFREE))
693,6 → 698,10
if(FromFlightCtrl.Param.Byte[5]) FromFC_LoadWP_List = FromFlightCtrl.Param.Byte[5];
if(FromFlightCtrl.Param.Byte[6]) FromFC_Load_SingePoint = FromFlightCtrl.Param.Byte[6];
if(FromFlightCtrl.Param.Byte[7]) FromFC_Store_SingePoint = FromFlightCtrl.Param.Byte[7];
CompassSetpoint = FromFlightCtrl.Param.sInt[4] * 10; // 8 & 9
CompassSetpointCorrected = (3600 + CompassSetpoint + FC.FromFC_CompassOffset + GeoMagDec) % 3600;
//FromFlightCtrl.Param.Byte[10]
//FromFlightCtrl.Param.Byte[11]
break;
case SPI_FCCMD_STICK:
FC.StickGas = FromFlightCtrl.Param.sByte[0];
/trunk/spi_slave.h
73,8 → 73,9
extern u8 SpeakHoTT;
extern u8 NC_Wait_for_LED;
extern s16 GyroCompassCorrected;
 
 
extern s16 CompassSetpointCorrected; // The compass setpoint that the FC tries to keep - corrected with the magnetic declination
extern s16 CompassSetpoint;
extern u8 BL_MinOfMaxPWM; // indication if all BL-controllers run on full power
extern u32 FC_I2C_ErrorConter;
extern u8 FromFC_VarioCharacter;