/trunk/compass.c |
---|
142,6 → 142,8 |
void Compass_Update(void) |
{ |
static s16vec_t old; |
static u32 check_value_counter = 0; |
// check for new cal state |
Compass_UpdateCalState(); |
// initiate new compass communication |
158,6 → 160,19 |
DebugOut.Analog[24] = MagVector.X; |
DebugOut.Analog[25] = MagVector.Y; |
DebugOut.Analog[26] = MagVector.Z; |
if(!((old.X == MagVector.X) || (old.Y == MagVector.Y) || (old.Z == MagVector.Z))) check_value_counter = 0; // Values are normally changing |
if(check_value_counter > 5000) |
{ |
Compass_Heading = -1; // values didn't change for 5 seconds -> probably a compass-fault |
} |
else check_value_counter++; |
DebugOut.Analog[16] = check_value_counter; |
old.X = MagVector.X; |
old.Y = MagVector.Y; |
old.Z = MagVector.Z; |
} |
// put cal state into fifo |
/trunk/main.h |
---|
35,7 → 35,7 |
#define VERSION_SERIAL_MINOR 0 |
#ifndef FOLLOW_ME |
#define FC_SPI_COMPATIBLE 20 |
#define FC_SPI_COMPATIBLE 21 |
#else |
#define FC_SPI_COMPATIBLE 0xFF |
#endif |
148,6 → 148,7 |
u8 OrientationAngle; |
u8 GlobalConfig; |
u8 ExtraConfig; |
u8 ComingHomeAltitude; |
} __attribute__((packed)) Param_t; |
typedef struct |
/trunk/menu.c |
---|
115,12 → 115,17 |
case 0: |
LCD_printfxy(0,0,"++ Navi-Ctrl ++"); |
LCD_printfxy(0,1,"HW V%d.%d SW V%d.%d%c", Version_HW/10, Version_HW%10, VERSION_MAJOR, VERSION_MINOR, 'a'+ VERSION_PATCH); |
if(ErrorCode) |
{ |
LCD_printfxy(0,2,"Error: %d",ErrorCode); |
LCD_printfxy(0,3,"%s",ErrorMSG); |
} |
else LCD_printfxy(0,3,"(c) Buss, Busker"); |
else |
{ |
LCD_printfxy(0,3,"(c) Buss, Busker"); |
LCD_printfxy(0,2,"%s",ErrorMSG); |
} |
break; |
case 1: |
if (GPSData.Status == INVALID) |
/trunk/ncmag.c |
---|
565,6 → 565,7 |
void NCMAG_Update(void) |
{ |
static u32 TimerUpdate = 0; |
static u8 send_config = 0; |
if( (I2C_State == I2C_STATE_OFF) || !NCMAG_Present ) |
{ |
574,11 → 575,23 |
if(CheckDelay(TimerUpdate)) |
{ |
if(++send_config == 100) // every two seconds |
{ |
send_config = 0; |
MagConfig.mode = MODE_CONTINUOUS; |
// activate positive bias field |
NCMAG_SetMagConfig(); |
TimerUpdate = SetDelay(15); // back into the old time-slot |
} |
else |
{ |
// check for new calibration state |
Compass_UpdateCalState(); |
if(Compass_CalState) NCMAG_Calibrate(); |
NCMAG_GetMagVector(); //Get new data; |
TimerUpdate = SetDelay(20); // every 20 ms are 50 Hz |
if(send_config == 99) TimerUpdate = SetDelay(5); // next event is the re-configuration |
else TimerUpdate = SetDelay(20); // every 20 ms are 50 Hz |
} |
} |
} |
/trunk/spi_slave.c |
---|
427,7 → 427,7 |
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° |
Parameter.ComingHomeAltitude = FromFlightCtrl.Param.Byte[10]; |
break; |
case SPI_FCCMD_ACCU: |
/trunk/uart1.c |
---|
149,7 → 149,7 |
"SPI Okay ", |
"I2C Error ", |
"I2C Okay ", //15 |
"*POI_INDEX ",// "Kalman_K ", |
" ",// "Kalman_K ", |
"ACC_Speed_N ", |
"ACC_Speed_E ", |
"Speed_z ",// "GPS ACC ", |