Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 587 → Rev 588

/trunk/GPS.h
17,6 → 17,8
 
#define CAM_UPDATE_AZIMUTH 0x01
#define CAM_UPDATE_ELEVATION 0x02
#define FORCE_AZIMUTH_ROTATION 0x04
 
typedef struct
{
s16 Azimuth; // angle in 1 deg measured clockwise from north
/trunk/main.h
14,7 → 14,7
 
#define VERSION_MAJOR 2
#define VERSION_MINOR 9
#define VERSION_PATCH 1
#define VERSION_PATCH 2
// 0 = A
// 1 = B
// 2 = C
36,7 → 36,7
// 18 = S
 
#ifndef FOLLOW_ME
#define FC_SPI_COMPATIBLE 72 // <------------------
#define FC_SPI_COMPATIBLE 73 // <------------------
#else
#define FC_SPI_COMPATIBLE 0xFF
#endif
121,6 → 121,12
#define CFG_TEACHABLE_CAREFREE 0x40
#define CFG_IGNORE_MAG_ERR_AT_STARTUP 0x80
 
// Parameter.HomeYawMode
#define NO_CHANGE 0
#define FRONT_TO_HOME 1
#define REAR_TO_HOME 2
#define LIKE_AT_START 3
 
// Parameter.ReceiverType defines for the receiver selection
#define RECEIVER_PPM 0
#define RECEIVER_SPEKTRUM 1
201,6 → 207,7
u8 MaximumAltitude; // in m
u8 Driftkomp;
u8 ReceiverType;
u8 HomeYawMode;
} __attribute__((packed)) Param_t;
 
typedef struct
/trunk/menu.c
286,7 → 286,14
else sign = '+';
i1 = abs(NaviData.HomePosition.Altitude)/1000L;
i2 = abs(NaviData.HomePosition.Altitude)%1000L;
LCD_printfxy(0,3,"Alt:%c%04ld.%03ld m",sign, i1, i2);
LCD_printfxy(0,3,"Alt:%c%04ld.%03ldm",sign, i1, i2);
switch(Parameter.HomeYawMode)
{
case NO_CHANGE: LCD_printfxy(17,3,"(-)"); break;
case FRONT_TO_HOME: LCD_printfxy(17,3,"(F)"); break;
case REAR_TO_HOME: LCD_printfxy(17,3,"(R)"); break;
case LIKE_AT_START: LCD_printfxy(17,3,"(S)"); break;
}
}
break;
case 9:
313,7 → 320,7
else sign = '+';
i1 = abs(NaviData.TargetPosition.Altitude)/1000L;
i2 = abs(NaviData.TargetPosition.Altitude)%1000L;
LCD_printfxy(0,3,"Alt:%c%04ld.%03ld m",sign, i1, i2);
LCD_printfxy(0,3,"Alt:%c%04ld.%03ldm",sign, i1, i2);
}
break;
case 10: // RC stick controls from FC
/trunk/params.c
26,15 → 26,17
 
switch(id)
{
case NCPARAMS_FORCE_NEW_COMPASS_DIRECTION:
CAM_Orientation.UpdateMask |= FORCE_AZIMUTH_ROTATION;
// Break fehlt hier absichtlich
case NCPARAMS_NEW_COMPASS_DIRECTION_SETPOINT:
if(NULL == PointList_GetPOI())
{
CAM_Orientation.Azimuth = *pvalue;
CAM_Orientation.Elevation = 0;
CAM_Orientation.UpdateMask = CAM_UPDATE_AZIMUTH;
CAM_Orientation.UpdateMask |= CAM_UPDATE_AZIMUTH;
}
break;
 
default:
break;
}
/trunk/params.h
10,6 → 10,7
#define NCPARAMS_SHOW_TARGET 5
#define NCPARAMS_WP_EVENT_ONCE 6
#define NCPARAMS_WP_EVENT_FOREVER 7
#define NCPARAMS_FORCE_NEW_COMPASS_DIRECTION 8
 
#define NCPARAM_STATE_UNDEFINED 0
#define NCRARAM_STATE_VALID 1
/trunk/spi_slave.c
352,7 → 352,7
ToFlightCtrl.Param.sByte[1] = (s8) Kalman_MaxFusion;
ToFlightCtrl.Param.sByte[2] = (s8) Kalman_MaxDrift;
ToFlightCtrl.Param.Byte[3] = (u8) Kalman_Kompass;
ToFlightCtrl.Param.sByte[4] = (s8) ToFcGpsZ;
ToFlightCtrl.Param.Byte[4] = 0; // siehe bitcodiert unten
ToFlightCtrl.Param.Byte[5] = (s8) ToFC_Rotate_C;
ToFlightCtrl.Param.Byte[6] = (s8) ToFC_Rotate_S;
ToFlightCtrl.Param.Byte[7] = GPS_Aid_StickMultiplikator;
361,7 → 361,8
// if(CAM_Orientation.Azimuth != -1) ToFlightCtrl.Param.sInt[4] = (CAM_Orientation.Azimuth + (3*360) - (FC.FromFC_CompassOffset / 10 + GeoMagDec/10 + Parameter.OrientationAngle * 15)) % 360; // the FC uses the uncorrected comnpass value
if(CAM_Orientation.Azimuth != -1) ToFlightCtrl.Param.sInt[4] = (CAM_Orientation.Azimuth + (3*360) - (FC.FromFC_CompassOffset / 10 + GeoMagDec/10 + Parameter.CamOrientation * 15)) % 360; // the FC uses the uncorrected comnpass value
else CAM_Orientation.Azimuth = -1;
CAM_Orientation.UpdateMask &= ~CAM_UPDATE_AZIMUTH;
if(CAM_Orientation.UpdateMask & FORCE_AZIMUTH_ROTATION) ToFlightCtrl.Param.sByte[4] = 0x01; // allows Yawing without CareFree (Yawing at Coming Home)
CAM_Orientation.UpdateMask &= ~(CAM_UPDATE_AZIMUTH | FORCE_AZIMUTH_ROTATION);
}
else
{
819,7 → 820,8
ServoParams.RollControl = FromFlightCtrl.Param.Byte[1];
Parameter.DescendRange = FromFlightCtrl.Param.Byte[2];
Parameter.MaximumAltitude = FromFlightCtrl.Param.Byte[3];
// 4
ServoParams.CompInvert = FromFlightCtrl.Param.Byte[4];
Parameter.HomeYawMode = ((ServoParams.CompInvert & 0x18) >> 3);
// 5
// 6
// 7
837,9 → 839,6
DebugOut.Analog[2] = FromFlightCtrl.AccNick;
DebugOut.Analog[3] = FromFlightCtrl.AccRoll;
DebugOut.Analog[11] = FromFlightCtrl.GyroHeading/10;// in deg
Data3D.AngleNick = FromFlightCtrl.AngleNick; // in 0.1 deg
Data3D.AngleRoll = FromFlightCtrl.AngleRoll; // in 0.1 deg
Data3D.Heading = FromFlightCtrl.GyroHeading; // in 0.1 deg
// every time we got new data from the FC via SPI call the navigation routine
// and update GPSStick that are returned to FC
SPI_RxBuffer_Request = 0;
/trunk/timer2.h
4,7 → 4,7
typedef struct
{
// u8 Refresh;
// u8 CompInvert;
u8 CompInvert;
u8 NickControl;
// u8 NickComp;
// u8 NickMin;
15,7 → 15,20
// u8 RollMax;
} __attribute__((packed)) ServoParams_t;
 
// bitcoding for ServoParams.ServoCompInvert
#define SERVO_NICK_INV 0x01
#define SERVO_ROLL_INV 0x02
#define SERVO_RELATIVE 0x04 // direct poti control or relative moving of the servo value
#define CH_DIRECTION_1 0x08
#define CH_DIRECTION_2 0x10
 
//CH Orientation ServoBits 0x08 0x10
// --> no change 0 0
// --> front to starting point 0 1
// --> rear to to starting point 1 0
//-> start orientation 1 1
 
 
extern volatile ServoParams_t ServoParams;
 
void TIMER2_Init(void);
/trunk/uart1.c
561,7 → 561,6
UART1_Request_WPLStore = TRUE;
break;
 
 
case 'j':// Set/Get NC-Parameter
switch(SerialMsg.pData[0])
{
1044,6 → 1043,10
Data3D.StickRoll = FC.StickRoll;
Data3D.StickYaw = FC.StickYaw;
Data3D.StickGas = FC.StickGas;
Data3D.AngleNick = FromFlightCtrl.AngleNick; // in 0.1 deg
Data3D.AngleRoll = FromFlightCtrl.AngleRoll; // in 0.1 deg
Data3D.Heading = FromFlightCtrl.GyroHeading; // in 0.1 deg
Data3D.Altimeter = FC.Altimeter; // in 5cm -> 20 = 1m
MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'C', NC_ADDRESS, 1,(u8 *)&Data3D, sizeof(Data3D));
UART1_Data3D_Timer = SetDelay(UART1_Data3D_Interval);
UART1_Request_Data3D = FALSE;
/trunk/uart1.h
43,7 → 43,8
u8 StickRoll;
u8 StickYaw;
u8 StickGas;
u8 reserve[4];
s16 Altimeter; // in 5cm
u8 reserve[2];
} __attribute__((packed)) Data3D_t;
 
extern Data3D_t Data3D;