Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 487 → Rev 488

/trunk/compass.c
190,7 → 190,7
if(check_value_counter > 5000)
{
Compass_Heading = -1; // values didn't change for 5 seconds -> probably a compass-fault
CompassValueErrorCount = 35;
// CompassValueErrorCount = 35;
}
else check_value_counter++;
 
/trunk/main.c
159,14 → 159,7
 
//if(I2C_CompassPort == I2C_EXTERN_0) LED_RED_OFF_T;
 
if((FCCalibActive || CompassCalState) && FC_Version.Hardware)
{
sprintf(ErrorMSG,"Calibrate... ");
newErrorCode = 0;
ErrorCode = 0;
no_error_delay = 1;
}
else if(CheckDelay(I2C1_Timeout) && (I2C_CompassPort == I2C_INTERN_1))
if(CheckDelay(I2C1_Timeout) && (I2C_CompassPort == I2C_INTERN_1))
{
LED_RED_ON;
sprintf(ErrorMSG,"no compass communica");
192,7 → 185,33
UART_VersionInfo.HardwareError[0] |= NC_ERROR0_COMPASS_RX;
DebugOut.StatusRed |= AMPEL_COMPASS;
}
else if(CompassValueErrorCount > 30)
{
LED_RED_ON;
sprintf(ErrorMSG,"compass sensor error");
newErrorCode = 34;
StopNavigation = 1;
UART_VersionInfo.HardwareError[0] |= NC_ERROR0_COMPASS_VALUE;
if(I2C_CompassPort == I2C_INTERN_1)
{
I2C1_Deinit();
I2C1_Init();
}
else
{
I2C0_Deinit();
I2C0_Init();
}
}
else
if((FCCalibActive || CompassCalState) && FC_Version.Hardware)
{
sprintf(ErrorMSG,"Calibrate... ");
newErrorCode = 0;
ErrorCode = 0;
no_error_delay = 1;
}
else
if(CheckDelay(SPI0_Timeout))
{
LED_RED_ON;
305,14 → 324,6
StopNavigation = 1;
UART_VersionInfo.HardwareError[0] |= NC_ERROR0_COMPASS_VALUE;
}
else if(CompassValueErrorCount > 30)
{
LED_RED_ON;
sprintf(ErrorMSG,"compass sensor error");
newErrorCode = 34;
StopNavigation = 1;
UART_VersionInfo.HardwareError[0] |= NC_ERROR0_COMPASS_VALUE;
}
else if(Compass_Heading < 0)
{
LED_RED_ON;
460,6 → 471,8
UART1_TransmitTxData(); // PC send answer
UART2_TransmitTxData(); // FC send answer
// ---------------- Error Check Timing ----------------------------
 
//DebugOut.Analog[16] = CompassValueErrorCount;
if(CheckDelay(TimerCheckError) || (FC.StatusFlags & FC_STATUS_START && !(oldFcFlags & FC_STATUS_START))) // Timer or FY wants to start
{
if(CheckDelay(TimerCheckError))
/trunk/ncmag.c
343,9 → 343,9
static u8 OldCalState = 0;
s16 MinCalibration = 450;
 
X = (4*X + MagRawVector.X + 3)/5;
Y = (4*Y + MagRawVector.Y + 3)/5;
Z = (4*Z + MagRawVector.Z + 3)/5;
X = (X + MagRawVector.X)/2;
Y = (Y + MagRawVector.Y)/2;
Z = (Z + MagRawVector.Z)/2;
 
switch(Compass_CalState)
{
360,6 → 360,7
Zmin = 10000;
Zmax = -10000;
speak = 1;
CompassValueErrorCount = 0;
if(Compass_CalState != OldCalState) // avoid continously writing of eeprom!
{
UART1_PutString("\r\nStarting compass calibration");
437,6 → 438,13
Calibration.MagY.Offset = (Ymin + Ymax) / 2;
Calibration.MagZ.Range = Zmax - Zmin;
Calibration.MagZ.Offset = (Zmin + Zmax) / 2;
if(CompassValueErrorCount)
{
SpeakHoTT = SPEAK_ERR_CALIBARTION;
UART1_PutString("\r\nCalibration FAILED - Compass sensor error !!!!\r\n ");
 
}
else
if((Calibration.MagX.Range > MinCalibration) && (Calibration.MagY.Range > MinCalibration) && (Calibration.MagZ.Range > MinCalibration))
{
NCMAG_IsCalibrated = NCMag_CalibrationWrite(I2C_CompassPort);