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 |