Subversion Repositories FlightCtrl

Rev

Rev 2466 | Rev 2485 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2466 Rev 2477
Line 18... Line 18...
18
unsigned char *SPI_TX_Buffer;
18
unsigned char *SPI_TX_Buffer;
Line 19... Line 19...
19
 
19
 
20
unsigned char SPITransferCompleted, SPI_ChkSum;
20
unsigned char SPITransferCompleted, SPI_ChkSum;
Line 21... Line 21...
21
unsigned char SPI_RxDataValid,NaviDataOkay = 250;
21
unsigned char SPI_RxDataValid,NaviDataOkay = 250;
22
 
22
 
23
unsigned char SPI_CommandSequence[] = { SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_PARAMETER1,
23
unsigned char SPI_CommandSequence[] = { SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_SLOW,
24
                                                                                SPI_FCCMD_STICK, SPI_FCCMD_VERSION, SPI_FCCMD_BL_ACCU,
24
                                                                                SPI_FCCMD_STICK, SPI_FCCMD_VERSION, SPI_FCCMD_BL_ACCU,
25
                                        SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_MISC,SPI_FCCMD_SERVOS,
25
                                        SPI_FCCMD_STICK, SPI_FCCMD_USER, SPI_FCCMD_MISC,SPI_FCCMD_SERVOS,
26
                                                                                SPI_FCCMD_STICK, SPI_FCCMD_PARAMETER2, SPI_FCCMD_BL_ACCU
26
                                                                                SPI_FCCMD_STICK, SPI_FCCMD_PARAMETER2, SPI_FCCMD_BL_ACCU
Line 146... Line 146...
146
 
146
 
147
//------------------------------------------------------
147
//------------------------------------------------------
148
void UpdateSPI_Buffer(void)
148
void UpdateSPI_Buffer(void)
149
{
149
{
150
  signed int tmp;
150
  signed int tmp;
151
  static unsigned char motorindex, oldcommand = SPI_NCCMD_VERSION;
151
  static unsigned char motorindex, oldcommand = SPI_NCCMD_VERSION, slow_command;
152
  ToNaviCtrl.IntegralNick = (int) (IntegralNick / (long)(EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
152
  ToNaviCtrl.IntegralNick = (int) (IntegralNick / (long)(EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
153
  ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / (long)(EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
153
  ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / (long)(EE_Parameter.GyroAccFaktor * 4)); // etwa in 0.1 Grad
154
  ToNaviCtrl.GyroCompass = (10 * ErsatzKompass) / GIER_GRAD_FAKTOR;
154
  ToNaviCtrl.GyroCompass = (10 * ErsatzKompass) / GIER_GRAD_FAKTOR;
155
  ToNaviCtrl.GyroGier = (signed int) AdNeutralGier - AdWertGier;
155
  ToNaviCtrl.GyroGier = (signed int) AdNeutralGier - AdWertGier;
Line 191... Line 191...
191
                                ToNaviCtrl.Param.Byte[11] = Motor[motorindex].Current;
191
                                ToNaviCtrl.Param.Byte[11] = Motor[motorindex].Current;
Line 192... Line 192...
192
 
192
 
193
                                if(Mixer.Motor[++motorindex][0] <= 0) // next motor is not used ?
193
                                if(Mixer.Motor[++motorindex][0] <= 0) // next motor is not used ?
194
                                  while(Mixer.Motor[motorindex][0] <= 0 && motorindex) motorindex = (motorindex + 1) % 13;
194
                                  while(Mixer.Motor[motorindex][0] <= 0 && motorindex) motorindex = (motorindex + 1) % 13;
195
        break;
195
        break;
-
 
196
         case SPI_FCCMD_SLOW:
-
 
197
               switch(slow_command)
-
 
198
           {
-
 
199
                         case 0:
196
         case SPI_FCCMD_PARAMETER1:
200
                                ToNaviCtrl.Command = SPI_FCCMD_PARAMETER1; slow_command = 1;
197
                                ToNaviCtrl.Param.Byte[0] = (unsigned char) BattLowVoltageWarning; //0.1V
201
                                ToNaviCtrl.Param.Byte[0] = (unsigned char) BattLowVoltageWarning; //0.1V
198
                                ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain;           // Parameters for the Naviboard
202
                                ToNaviCtrl.Param.Byte[1] = EE_Parameter.NaviGpsGain;           // Parameters for the Naviboard
199
                                ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviGpsP;
203
                                ToNaviCtrl.Param.Byte[2] = EE_Parameter.NaviGpsP;
200
                                ToNaviCtrl.Param.Byte[3] = EE_Parameter.NaviGpsI;
204
                                ToNaviCtrl.Param.Byte[3] = EE_Parameter.NaviGpsI;
Line 204... Line 208...
204
                ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviStickThreshold;
208
                ToNaviCtrl.Param.Byte[7] = EE_Parameter.NaviStickThreshold;
205
                ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviMaxFlyingRange;
209
                ToNaviCtrl.Param.Byte[8] = EE_Parameter.NaviMaxFlyingRange;
206
                ToNaviCtrl.Param.Byte[9] = EE_Parameter.NaviWindCorrection;
210
                ToNaviCtrl.Param.Byte[9] = EE_Parameter.NaviWindCorrection;
207
                ToNaviCtrl.Param.Byte[10] = EE_Parameter.NaviAccCompensation;
211
                ToNaviCtrl.Param.Byte[10] = EE_Parameter.NaviAccCompensation;
208
                                ToNaviCtrl.Param.Byte[11] = EE_Parameter.NaviAngleLimitation;
212
                                ToNaviCtrl.Param.Byte[11] = EE_Parameter.NaviAngleLimitation;
-
 
213
                         break;
-
 
214
                         default:
-
 
215
                                ToNaviCtrl.Command = SPI_FCCMD_NEUTRAL; slow_command = 0;
-
 
216
                                ToNaviCtrl.Param.Int[0] = AdNeutralNick; // 0 & 1
-
 
217
                                ToNaviCtrl.Param.Int[1] = AdNeutralRoll; // 2 & 3
-
 
218
                                ToNaviCtrl.Param.Int[2] = AdNeutralGier; // 4 & 5
-
 
219
                                ToNaviCtrl.Param.Byte[6] = EE_Parameter.Driftkomp;
-
 
220
ToNaviCtrl.Param.Byte[7] = 0;
-
 
221
ToNaviCtrl.Param.Byte[8] = 0;
-
 
222
ToNaviCtrl.Param.Byte[9] = 0;
-
 
223
ToNaviCtrl.Param.Byte[10] = 0;
-
 
224
ToNaviCtrl.Param.Byte[11] = 0;
-
 
225
                         break;
-
 
226
                        }      
209
            break;
227
            break;
210
         case SPI_FCCMD_PARAMETER2:
228
         case SPI_FCCMD_PARAMETER2:
211
                                ToNaviCtrl.Param.Byte[0] = EE_Parameter.AutoPhotoDistance;     // Distance between Photo releases
229
                                ToNaviCtrl.Param.Byte[0] = EE_Parameter.AutoPhotoDistance;     // Distance between Photo releases
212
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
230
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
213
                                // create the ToNC_SpeakHoTT
231
                                // create the ToNC_SpeakHoTT
Line 227... Line 245...
227
                                ToNaviCtrl.Param.Byte[6] = ToNC_Load_SingePoint;
245
                                ToNaviCtrl.Param.Byte[6] = ToNC_Load_SingePoint;
228
                                ToNaviCtrl.Param.Byte[7] = ToNC_Store_SingePoint;
246
                                ToNaviCtrl.Param.Byte[7] = ToNC_Store_SingePoint;
229
                                ToNC_Load_WP_List = 0;
247
                                ToNC_Load_WP_List = 0;
230
                                ToNC_Load_SingePoint = 0;
248
                                ToNC_Load_SingePoint = 0;
231
                                ToNC_Store_SingePoint = 0;
249
                                ToNC_Store_SingePoint = 0;
232
                                ToNaviCtrl.Param.sInt[4] = KompassSollWert; // Pos. 8 & 9
250
                                if(Parameter_KompassWirkung) ToNaviCtrl.Param.sInt[4] = KompassSollWert; // Pos. 8 & 9
-
 
251
                                else ToNaviCtrl.Param.sInt[4] = ErsatzKompassInGrad; // answer with the compass value if the Compass effect is zero
233
                                ToNaviCtrl.Param.Byte[10] = EE_Parameter.AutoPhotoAtitudes;
252
                                ToNaviCtrl.Param.Byte[10] = EE_Parameter.AutoPhotoAtitudes;
234
                                ToNaviCtrl.Param.Byte[11] = EE_Parameter.SingleWpSpeed;
253
                                ToNaviCtrl.Param.Byte[11] = EE_Parameter.SingleWpSpeed;
235
            break;
254
            break;
236
         case SPI_FCCMD_STICK:
255
         case SPI_FCCMD_STICK:
237
              cli();
256
              cli();
Line 289... Line 308...
289
            case SPI_FCCMD_SERVOS:
308
            case SPI_FCCMD_SERVOS:
290
                        ToNaviCtrl.Param.Int[0] = Capacity.UsedCapacity; // mAh
309
                        ToNaviCtrl.Param.Int[0] = Capacity.UsedCapacity; // mAh
291
                        ToNaviCtrl.Param.Byte[2] = Parameter_ServoNickControl;
310
                        ToNaviCtrl.Param.Byte[2] = Parameter_ServoNickControl;
292
                        ToNaviCtrl.Param.Byte[3] = Parameter_ServoRollControl;
311
                        ToNaviCtrl.Param.Byte[3] = Parameter_ServoRollControl;
293
                        ToNaviCtrl.Param.Byte[4] = DebugOut.Analog[28]; // I2C-Error counter
312
                        ToNaviCtrl.Param.Byte[4] = DebugOut.Analog[28]; // I2C-Error counter
294
                        ToNaviCtrl.Param.Byte[5] = RedundanceBlOperation;
313
                        ToNaviCtrl.Param.Byte[5] = FC_StatusFlags3;
295
                        ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviDescendRange; // in 10m
314
                        ToNaviCtrl.Param.Byte[6] = EE_Parameter.NaviDescendRange; // in 10m
296
                        ToNaviCtrl.Param.Byte[7] = Parameter_MaximumAltitude;
315
                        ToNaviCtrl.Param.Byte[7] = Parameter_MaximumAltitude;
297
                        ToNaviCtrl.Param.Int[4] = FlugMinutenGesamt; // 8 & 9
316
                        ToNaviCtrl.Param.Int[4] = FlugMinutenGesamt; // 8 & 9
298
                        ToNaviCtrl.Param.Byte[10] = EE_Parameter.CamOrientation;
317
                        ToNaviCtrl.Param.Byte[10] = EE_Parameter.CamOrientation;
299
                        ToNaviCtrl.Param.Byte[11] = VersionInfo.BL_Firmware;
318
                        ToNaviCtrl.Param.Byte[11] = VersionInfo.BL_Firmware;