Subversion Repositories NaviCtrl

Rev

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