Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 2476 → Rev 2477

/trunk/spi.c
20,7 → 20,7
unsigned char SPITransferCompleted, SPI_ChkSum;
unsigned char SPI_RxDataValid,NaviDataOkay = 250;
 
unsigned char SPI_CommandSequence[] = { SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_PARAMETER1,
unsigned char SPI_CommandSequence[] = { SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_SLOW,
SPI_FCCMD_STICK, SPI_FCCMD_VERSION, SPI_FCCMD_BL_ACCU,
SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_MISC,SPI_FCCMD_SERVOS,
SPI_FCCMD_STICK, SPI_FCCMD_PARAMETER2, SPI_FCCMD_BL_ACCU
148,7 → 148,7
void UpdateSPI_Buffer(void)
{
signed int tmp;
static unsigned char motorindex, oldcommand = SPI_NCCMD_VERSION;
static unsigned char motorindex, oldcommand = SPI_NCCMD_VERSION, slow_command;
ToNaviCtrl.IntegralNick = (int) (IntegralNick / (long)(EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / (long)(EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
ToNaviCtrl.GyroCompass = (10 * ErsatzKompass) / GIER_GRAD_FAKTOR;
193,7 → 193,11
if(Mixer.Motor[++motorindex][0] <= 0) // next motor is not used ?
while(Mixer.Motor[motorindex][0] <= 0 && motorindex) motorindex = (motorindex + 1) % 13;
break;
case SPI_FCCMD_PARAMETER1:
case SPI_FCCMD_SLOW:
switch(slow_command)
{
case 0:
ToNaviCtrl.Command = SPI_FCCMD_PARAMETER1; slow_command = 1;
ToNaviCtrl.Param.Byte[0] = (unsigned char) BattLowVoltageWarning; //0.1V
ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain; // Parameters for the Naviboard
ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviGpsP;
206,6 → 210,20
ToNaviCtrl.Param.Byte[9] = EE_Parameter.NaviWindCorrection;
ToNaviCtrl.Param.Byte[10] = EE_Parameter.NaviAccCompensation;
ToNaviCtrl.Param.Byte[11] = EE_Parameter.NaviAngleLimitation;
break;
default:
ToNaviCtrl.Command = SPI_FCCMD_NEUTRAL; slow_command = 0;
ToNaviCtrl.Param.Int[0] = AdNeutralNick; // 0 & 1
ToNaviCtrl.Param.Int[1] = AdNeutralRoll; // 2 & 3
ToNaviCtrl.Param.Int[2] = AdNeutralGier; // 4 & 5
ToNaviCtrl.Param.Byte[6] = EE_Parameter.Driftkomp;
ToNaviCtrl.Param.Byte[7] = 0;
ToNaviCtrl.Param.Byte[8] = 0;
ToNaviCtrl.Param.Byte[9] = 0;
ToNaviCtrl.Param.Byte[10] = 0;
ToNaviCtrl.Param.Byte[11] = 0;
break;
}
break;
case SPI_FCCMD_PARAMETER2:
ToNaviCtrl.Param.Byte[0] = EE_Parameter.AutoPhotoDistance; // Distance between Photo releases
229,7 → 247,8
ToNC_Load_WP_List = 0;
ToNC_Load_SingePoint = 0;
ToNC_Store_SingePoint = 0;
ToNaviCtrl.Param.sInt[4] = KompassSollWert; // Pos. 8 & 9
if(Parameter_KompassWirkung) ToNaviCtrl.Param.sInt[4] = KompassSollWert; // Pos. 8 & 9
else ToNaviCtrl.Param.sInt[4] = ErsatzKompassInGrad; // answer with the compass value if the Compass effect is zero
ToNaviCtrl.Param.Byte[10] = EE_Parameter.AutoPhotoAtitudes;
ToNaviCtrl.Param.Byte[11] = EE_Parameter.SingleWpSpeed;
break;
291,7 → 310,7
ToNaviCtrl.Param.Byte[2] = Parameter_ServoNickControl;
ToNaviCtrl.Param.Byte[3] = Parameter_ServoRollControl;
ToNaviCtrl.Param.Byte[4] = DebugOut.Analog[28]; // I2C-Error counter
ToNaviCtrl.Param.Byte[5] = RedundanceBlOperation;
ToNaviCtrl.Param.Byte[5] = FC_StatusFlags3;
ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviDescendRange; // in 10m
ToNaviCtrl.Param.Byte[7] = Parameter_MaximumAltitude;
ToNaviCtrl.Param.Int[4] = FlugMinutenGesamt; // 8 & 9