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; |