Rev 160 | Rev 164 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 160 | Rev 161 | ||
---|---|---|---|
Line 120... | Line 120... | ||
120 | { |
120 | { |
121 | static u8 rxchksum = 0; |
121 | static u8 rxchksum = 0; |
122 | u8 rxdata; |
122 | u8 rxdata; |
123 | static SPI_State_t SPI_State = SPI_SYNC1; |
123 | static SPI_State_t SPI_State = SPI_SYNC1; |
Line 124... | Line 124... | ||
124 | 124 | ||
125 | // clear pending bits |
125 | // clear pending bits |
126 | SSP_ClearITPendingBit(SSP0, SSP_IT_RxTimeOut); |
126 | SSP_ClearITPendingBit(SSP0, SSP_IT_RxTimeOut); |
127 | SSP_ClearITPendingBit(SSP0, SSP_IT_RxFifo); |
127 | SSP_ClearITPendingBit(SSP0, SSP_IT_RxFifo); |
128 | /* |
128 | /* |
129 | // Fill TxFIFO while its not full or end of packet is reached |
129 | // Fill TxFIFO while its not full or end of packet is reached |
130 | while (SSP_GetFlagStatus(SSP0, SSP_FLAG_TxFifoNotFull) == SET) |
130 | while (SSP_GetFlagStatus(SSP0, SSP_FLAG_TxFifoNotFull) == SET) |
131 | { |
131 | { |
132 | if (SPI_TxBufferIndex < SPI_TXBUFFER_LEN) // still data to send ? |
132 | if (SPI_TxBufferIndex < SPI_TXBUFFER_LEN) // still data to send ? |
133 | { |
133 | { |
134 | SSP0->DR = SPI_TxBuffer[SPI_TxBufferIndex]; // send a byte |
134 | SSP0->DR = SPI_TxBuffer[SPI_TxBufferIndex]; // send a byte |
135 | *Ptr_TxChksum += SPI_TxBuffer[SPI_TxBufferIndex]; // update checksum |
135 | *Ptr_TxChksum += SPI_TxBuffer[SPI_TxBufferIndex]; // update checksum |
Line 150... | Line 150... | ||
150 | while (SSP_GetFlagStatus(SSP0, SSP_FLAG_RxFifoNotEmpty) == SET) |
150 | while (SSP_GetFlagStatus(SSP0, SSP_FLAG_RxFifoNotEmpty) == SET) |
151 | { |
151 | { |
152 | rxdata = SSP0->DR; // catch the received byte |
152 | rxdata = SSP0->DR; // catch the received byte |
153 | // Fill TxFIFO while its not full or end of packet is reached |
153 | // Fill TxFIFO while its not full or end of packet is reached |
154 | while (SSP_GetFlagStatus(SSP0, SSP_FLAG_TxFifoNotFull) == SET) |
154 | while (SSP_GetFlagStatus(SSP0, SSP_FLAG_TxFifoNotFull) == SET) |
155 | { |
155 | { |
156 | if (SPI_TxBufferIndex < SPI_TXBUFFER_LEN) // still data to send ? |
156 | if (SPI_TxBufferIndex < SPI_TXBUFFER_LEN) // still data to send ? |
157 | { |
157 | { |
158 | SSP0->DR = SPI_TxBuffer[SPI_TxBufferIndex]; // send a byte |
158 | SSP0->DR = SPI_TxBuffer[SPI_TxBufferIndex]; // send a byte |
159 | *Ptr_TxChksum += SPI_TxBuffer[SPI_TxBufferIndex]; // update checksum |
159 | *Ptr_TxChksum += SPI_TxBuffer[SPI_TxBufferIndex]; // update checksum |
160 | SPI_TxBufferIndex++; // pointer to next byte |
160 | SPI_TxBufferIndex++; // pointer to next byte |
Line 309... | Line 309... | ||
309 | ToFlightCtrl.Param.sByte[0] = (s8) Kalman_K; |
309 | ToFlightCtrl.Param.sByte[0] = (s8) Kalman_K; |
310 | ToFlightCtrl.Param.sByte[1] = (s8) Kalman_MaxFusion; |
310 | ToFlightCtrl.Param.sByte[1] = (s8) Kalman_MaxFusion; |
311 | ToFlightCtrl.Param.sByte[2] = (s8) Kalman_MaxDrift; |
311 | ToFlightCtrl.Param.sByte[2] = (s8) Kalman_MaxDrift; |
312 | ToFlightCtrl.Param.Byte[3] = (u8) SerialLinkOkay; |
312 | ToFlightCtrl.Param.Byte[3] = (u8) SerialLinkOkay; |
313 | ToFlightCtrl.Param.sByte[4] = (s8) ToFcGpsZ; |
313 | ToFlightCtrl.Param.sByte[4] = (s8) ToFcGpsZ; |
314 | break; |
314 | break; |
Line 315... | Line 315... | ||
315 | 315 | ||
316 | default: |
316 | default: |
317 | break; |
317 | break; |
318 | } |
318 | } |
Line 367... | Line 367... | ||
367 | FC.Poti2 = FromFlightCtrl.Param.Byte[5]; |
367 | FC.Poti2 = FromFlightCtrl.Param.Byte[5]; |
368 | FC.Poti3 = FromFlightCtrl.Param.Byte[6]; |
368 | FC.Poti3 = FromFlightCtrl.Param.Byte[6]; |
369 | FC.Poti4 = FromFlightCtrl.Param.Byte[7]; |
369 | FC.Poti4 = FromFlightCtrl.Param.Byte[7]; |
370 | FC.RC_Quality = FromFlightCtrl.Param.Byte[8]; |
370 | FC.RC_Quality = FromFlightCtrl.Param.Byte[8]; |
371 | FC.RC_RSSI = FromFlightCtrl.Param.Byte[9]; |
371 | FC.RC_RSSI = FromFlightCtrl.Param.Byte[9]; |
372 | NaviData.Gas = FromFlightCtrl.Param.Byte[10]; |
372 | NaviData.Gas = FromFlightCtrl.Param.Byte[10]; |
373 | break; |
373 | break; |
Line 374... | Line 374... | ||
374 | 374 | ||
375 | case SPI_CMD_MISC: |
375 | case SPI_CMD_MISC: |
376 | if(CompassCalState != FromFlightCtrl.Param.Byte[0]) |
376 | if(CompassCalState != FromFlightCtrl.Param.Byte[0]) |
Line 384... | Line 384... | ||
384 | NaviData.SetpointAltitude = (s16) FromFlightCtrl.Param.Int[2]; // is located at byte 4 and 5 |
384 | NaviData.SetpointAltitude = (s16) FromFlightCtrl.Param.Int[2]; // is located at byte 4 and 5 |
385 | CHK_POTI_MM(Parameter.NaviGpsPLimit,FromFlightCtrl.Param.Byte[6],0,255); |
385 | CHK_POTI_MM(Parameter.NaviGpsPLimit,FromFlightCtrl.Param.Byte[6],0,255); |
386 | CHK_POTI_MM(Parameter.NaviGpsILimit,FromFlightCtrl.Param.Byte[7],0,255); |
386 | CHK_POTI_MM(Parameter.NaviGpsILimit,FromFlightCtrl.Param.Byte[7],0,255); |
387 | CHK_POTI_MM(Parameter.NaviGpsDLimit,FromFlightCtrl.Param.Byte[8],0,255); |
387 | CHK_POTI_MM(Parameter.NaviGpsDLimit,FromFlightCtrl.Param.Byte[8],0,255); |
388 | break; |
388 | break; |
389 | 389 | ||
390 | case SPI_CMD_SERVOS: |
390 | case SPI_CMD_SERVOS: |
391 | ServoParams.Refresh = FromFlightCtrl.Param.Byte[0]; |
391 | ServoParams.Refresh = FromFlightCtrl.Param.Byte[0]; |
392 | ServoParams.CompInvert = FromFlightCtrl.Param.Byte[1]; |
392 | ServoParams.CompInvert = FromFlightCtrl.Param.Byte[1]; |
393 | ServoParams.NickControl = FromFlightCtrl.Param.Byte[2]; |
393 | ServoParams.NickControl = FromFlightCtrl.Param.Byte[2]; |
394 | ServoParams.NickComp = FromFlightCtrl.Param.Byte[3]; |
394 | ServoParams.NickComp = FromFlightCtrl.Param.Byte[3]; |
395 | ServoParams.NickMin = FromFlightCtrl.Param.Byte[4]; |
395 | ServoParams.NickMin = FromFlightCtrl.Param.Byte[4]; |
396 | ServoParams.NickMax = FromFlightCtrl.Param.Byte[5]; |
396 | ServoParams.NickMax = FromFlightCtrl.Param.Byte[5]; |
397 | ServoParams.RollControl = FromFlightCtrl.Param.Byte[6]; |
397 | ServoParams.RollControl = FromFlightCtrl.Param.Byte[6]; |
398 | ServoParams.RollComp = FromFlightCtrl.Param.Byte[7]; |
398 | ServoParams.RollComp = FromFlightCtrl.Param.Byte[7]; |
399 | ServoParams.RollMin = FromFlightCtrl.Param.Byte[8]; |
399 | ServoParams.RollMin = FromFlightCtrl.Param.Byte[8]; |
400 | ServoParams.RollMax = FromFlightCtrl.Param.Byte[9]; |
400 | ServoParams.RollMax = FromFlightCtrl.Param.Byte[9]; |
401 | break; |
401 | break; |
Line 402... | Line 402... | ||
402 | 402 | ||
403 | case SPI_CMD_VERSION: |
403 | case SPI_CMD_VERSION: |
404 | FC_Version.Major = FromFlightCtrl.Param.Byte[0]; |
404 | FC_Version.Major = FromFlightCtrl.Param.Byte[0]; |