Subversion Repositories FlightCtrl

Rev

Rev 855 | Rev 882 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 855 Rev 871
1
// ######################## SPI - FlightCtrl ###################
1
// ######################## SPI - FlightCtrl ###################
2
#include "main.h"
2
#include "main.h"
3
 
3
 
4
 
4
 
5
//struct str_ToNaviCtrl_Version   ToNaviCtrl_Version;
5
//struct str_ToNaviCtrl_Version   ToNaviCtrl_Version;
6
//struct str_FromNaviCtrl_Version   FromNaviCtrl_Version;
6
//struct str_FromNaviCtrl_Version   FromNaviCtrl_Version;
7
struct str_ToNaviCtrl   ToNaviCtrl;
7
struct str_ToNaviCtrl   ToNaviCtrl;
8
struct str_FromNaviCtrl   FromNaviCtrl;
8
struct str_FromNaviCtrl   FromNaviCtrl;
9
 
9
 
10
unsigned char              SPI_BufferIndex;
10
unsigned char              SPI_BufferIndex;
11
unsigned char              SPI_RxBufferIndex;
11
unsigned char              SPI_RxBufferIndex;
12
 
12
 
13
volatile unsigned char     SPI_Buffer[sizeof(FromNaviCtrl) + 8];
13
volatile unsigned char     SPI_Buffer[sizeof(FromNaviCtrl) + 8];
14
unsigned char *SPI_TX_Buffer;
14
unsigned char *SPI_TX_Buffer;
15
 
15
 
16
unsigned char SPITransferCompleted, SPI_ChkSum;
16
unsigned char SPITransferCompleted, SPI_ChkSum;
17
unsigned char SPI_RxDataValid;
17
unsigned char SPI_RxDataValid;
18
 
18
 
19
unsigned char SPI_CommandSequence[] = { SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_CAL_COMPASS };
19
unsigned char SPI_CommandSequence[] = { SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_USER, SPI_CMD_STICK, SPI_CMD_CAL_COMPASS };
20
unsigned char SPI_CommandCounter = 0;
20
unsigned char SPI_CommandCounter = 0;
21
 
21
 
22
#ifdef USE_SPI_COMMUNICATION
22
#ifdef USE_SPI_COMMUNICATION
23
 
23
 
24
//------------------------------------------------------
24
//------------------------------------------------------
25
void SPI_MasterInit(void)
25
void SPI_MasterInit(void)
26
{
26
{
27
  DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK);    // Set MOSI and SCK output, all others input 
27
  DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK);    // Set MOSI and SCK output, all others input 
28
  SLAVE_SELECT_DDR_PORT |= (1 << SPI_SLAVE_SELECT);
28
  SLAVE_SELECT_DDR_PORT |= (1 << SPI_SLAVE_SELECT);
29
   
29
   
30
  SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(0<<SPR0)|(0<<SPIE);   // Enable SPI, Master, set clock rate fck/64 
30
  SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(0<<SPR0)|(0<<SPIE);   // Enable SPI, Master, set clock rate fck/64 
31
  SPSR = 0;//(1<<SPI2X);
31
  SPSR = 0;//(1<<SPI2X);
32
 
32
 
33
  SLAVE_SELECT_PORT |=  (1 << SPI_SLAVE_SELECT);
33
  SLAVE_SELECT_PORT |=  (1 << SPI_SLAVE_SELECT);
34
  SPITransferCompleted = 1;
34
  SPITransferCompleted = 1;
35
 
35
 
36
  //SPDR = 0x00;  // dummy write
36
  //SPDR = 0x00;  // dummy write
37
 
37
 
38
  ToNaviCtrl.Sync1 = 0xAA;
38
  ToNaviCtrl.Sync1 = 0xAA;
39
  ToNaviCtrl.Sync2 = 0x83;
39
  ToNaviCtrl.Sync2 = 0x83;
40
 
40
 
41
  ToNaviCtrl.Command = SPI_CMD_USER;
41
  ToNaviCtrl.Command = SPI_CMD_USER;
42
  ToNaviCtrl.IntegralNick = 0;
42
  ToNaviCtrl.IntegralNick = 0;
43
  ToNaviCtrl.IntegralRoll = 0;
43
  ToNaviCtrl.IntegralRoll = 0;
44
  SPI_RxDataValid = 0;
44
  SPI_RxDataValid = 0;
45
}
45
}
46
 
46
 
47
//------------------------------------------------------
47
//------------------------------------------------------
48
void SPI_StartTransmitPacket(void)
48
void SPI_StartTransmitPacket(void)
49
{
49
{
50
   //if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return;    // transfer of prev. packet not completed
50
   //if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return;    // transfer of prev. packet not completed
51
   if (!SPITransferCompleted) return;
51
   if (!SPITransferCompleted) return;
52
//   _delay_us(30); 
52
//   _delay_us(30); 
53
   
53
   
54
   SLAVE_SELECT_PORT &=  ~(1 << SPI_SLAVE_SELECT);  // SelectSlave
54
   SLAVE_SELECT_PORT &=  ~(1 << SPI_SLAVE_SELECT);  // SelectSlave
55
   SPI_TX_Buffer = (unsigned char *) &ToNaviCtrl;
55
   SPI_TX_Buffer = (unsigned char *) &ToNaviCtrl;
56
   
56
   
57
   ToNaviCtrl.Command = SPI_CommandSequence[SPI_CommandCounter++];
57
   ToNaviCtrl.Command = SPI_CommandSequence[SPI_CommandCounter++];
58
   if (SPI_CommandCounter >= sizeof(SPI_CommandSequence)) SPI_CommandCounter = 0;
58
   if (SPI_CommandCounter >= sizeof(SPI_CommandSequence)) SPI_CommandCounter = 0;
59
   
59
   
60
   SPITransferCompleted = 0;
60
   SPITransferCompleted = 0;
61
   UpdateSPI_Buffer();                              // update buffer
61
   UpdateSPI_Buffer();                              // update buffer
62
 
62
 
63
   SPI_BufferIndex = 1;
63
   SPI_BufferIndex = 1;
64
  //ebugOut.Analog[16]++; 
64
  //ebugOut.Analog[16]++; 
65
   // -- Debug-Output ---
65
   // -- Debug-Output ---
66
   //----
66
   //----
67
   asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
67
   asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
68
   asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
68
   asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
69
   asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
69
   asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
70
   ToNaviCtrl.Chksum = ToNaviCtrl.Sync1;
70
   ToNaviCtrl.Chksum = ToNaviCtrl.Sync1;
71
   SPDR = ToNaviCtrl.Sync1;                  // Start transmission 
71
   SPDR = ToNaviCtrl.Sync1;                  // Start transmission 
72
//     SLAVE_SELECT_PORT |=  (1 << SPI_SLAVE_SELECT);   // DeselectSlave
72
//     SLAVE_SELECT_PORT |=  (1 << SPI_SLAVE_SELECT);   // DeselectSlave
73
 
73
 
74
}
74
}
75
 
75
 
76
//------------------------------------------------------
76
//------------------------------------------------------
77
//SIGNAL(SIG_SPI)
77
//SIGNAL(SIG_SPI)
78
void SPI_TransmitByte(void)
78
void SPI_TransmitByte(void)
79
{
79
{
80
   static unsigned char SPI_RXState = 0;
80
   static unsigned char SPI_RXState = 0;
81
   unsigned char rxdata;
81
   unsigned char rxdata;
82
   static unsigned char rxchksum;
82
   static unsigned char rxchksum;
83
   
83
   
84
   if (SPITransferCompleted) return;
84
   if (SPITransferCompleted) return;
85
   if (!(SPSR & (1 << SPIF))) return;
85
   if (!(SPSR & (1 << SPIF))) return;
86
  SendSPI = 4;
86
  SendSPI = 4;
87
   
87
   
88
//   _delay_us(30); 
88
//   _delay_us(30); 
89
  SLAVE_SELECT_PORT |=  (1 << SPI_SLAVE_SELECT);   // DeselectSlave
89
  SLAVE_SELECT_PORT |=  (1 << SPI_SLAVE_SELECT);   // DeselectSlave
90
 
90
 
91
  rxdata = SPDR;
91
  rxdata = SPDR;
92
  switch ( SPI_RXState)
92
  switch ( SPI_RXState)
93
  {
93
  {
94
  case 0:
94
  case 0:
95
           
95
           
96
                        SPI_RxBufferIndex = 0;
96
                        SPI_RxBufferIndex = 0;
97
                        //DebugOut.Analog[17]++;
97
                        //DebugOut.Analog[17]++;
98
                        rxchksum = rxdata;  
98
                        rxchksum = rxdata;  
99
                        if (rxdata == 0x81 )  { SPI_RXState  = 1;  }   // 1. Syncbyte ok 
99
                        if (rxdata == 0x81 )  { SPI_RXState  = 1;  }   // 1. Syncbyte ok 
100
                       
100
                       
101
           break;
101
           break;
102
 
102
 
103
   case 1:
103
   case 1:
104
                    if (rxdata == 0x55) { rxchksum += rxdata; SPI_RXState  = 2;  }   // 2. Syncbyte ok 
104
                    if (rxdata == 0x55) { rxchksum += rxdata; SPI_RXState  = 2;  }   // 2. Syncbyte ok 
105
                 else SPI_RXState  = 0;    
105
                 else SPI_RXState  = 0;    
106
                        //DebugOut.Analog[18]++;
106
                        //DebugOut.Analog[18]++;
107
           break;      
107
           break;      
108
           
108
           
109
   case 2:
109
   case 2:
110
                   SPI_Buffer[SPI_RxBufferIndex++]= rxdata;             // get data
110
                   SPI_Buffer[SPI_RxBufferIndex++]= rxdata;             // get data
111
           //DebugOut.Analog[19]++;
111
           //DebugOut.Analog[19]++;
112
           if (SPI_RxBufferIndex >= sizeof(FromNaviCtrl))
112
           if (SPI_RxBufferIndex >= sizeof(FromNaviCtrl))
113
                   {  
113
                   {  
114
                         
114
                         
115
                if (rxdata == rxchksum)
115
                if (rxdata == rxchksum)
116
                        {
116
                        {
117
                  unsigned char *ptr = (unsigned char *)&FromNaviCtrl;
117
                  unsigned char *ptr = (unsigned char *)&FromNaviCtrl;
118
     
118
     
119
                          memcpy(ptr, (unsigned char *) SPI_Buffer,  sizeof(SPI_Buffer));
119
                          memcpy(ptr, (unsigned char *) SPI_Buffer,  sizeof(SPI_Buffer));
120
                         
120
                         
121
                          SPI_RxDataValid = 1;
121
                          SPI_RxDataValid = 1;
122
                        }
122
                        }
123
                        else SPI_RxDataValid = 0;
123
                        else SPI_RxDataValid = 0;
124
                       
124
                       
125
                        SPI_RXState  = 0;  
125
                        SPI_RXState  = 0;  
126
                   }
126
                   }
127
                  else rxchksum += rxdata;
127
                  else rxchksum += rxdata;
128
        break;   
128
        break;   
129
         
129
         
130
  }            
130
  }            
131
 
131
 
132
   if (SPI_BufferIndex < sizeof(ToNaviCtrl))  
132
   if (SPI_BufferIndex < sizeof(ToNaviCtrl))  
133
     {
133
     {
134
           SLAVE_SELECT_PORT &=  ~(1 << SPI_SLAVE_SELECT);  // SelectSlave
134
           SLAVE_SELECT_PORT &=  ~(1 << SPI_SLAVE_SELECT);  // SelectSlave
135
           asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
135
           asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
136
           asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
136
           asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
137
           asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
137
           asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");         asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
138
           
138
           
139
           SPDR = SPI_TX_Buffer[SPI_BufferIndex];
139
           SPDR = SPI_TX_Buffer[SPI_BufferIndex];
140
           ToNaviCtrl.Chksum += SPI_TX_Buffer[SPI_BufferIndex];
140
           ToNaviCtrl.Chksum += SPI_TX_Buffer[SPI_BufferIndex];
141
        //   SLAVE_SELECT_PORT |=  (1 << SPI_SLAVE_SELECT);   // DeselectSlave
141
        //   SLAVE_SELECT_PORT |=  (1 << SPI_SLAVE_SELECT);   // DeselectSlave
142
 
142
 
143
         }
143
         }
144
         else SPITransferCompleted = 1;  
144
         else SPITransferCompleted = 1;  
145
       
145
       
146
         SPI_BufferIndex++;
146
         SPI_BufferIndex++;
147
}
147
}
148
 
148
 
149
 
149
 
150
//------------------------------------------------------
150
//------------------------------------------------------
151
void UpdateSPI_Buffer(void)
151
void UpdateSPI_Buffer(void)
152
{
152
{
153
  static unsigned char i =0;
153
  static unsigned char i =0;
154
  signed int tmp;
154
  signed int tmp;
155
  cli();
155
  cli();
156
 
156
 
157
  ToNaviCtrl.IntegralNick = (int) (IntegralNick / 108);
157
  ToNaviCtrl.IntegralNick = (int) (IntegralNick / 108);
158
  ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / 108);
158
  ToNaviCtrl.IntegralRoll = (int) (IntegralRoll / 108);
159
  ToNaviCtrl.GyroCompass = ErsatzKompass / GIER_GRAD_FAKTOR;
159
  ToNaviCtrl.GyroCompass = ErsatzKompass / GIER_GRAD_FAKTOR;
160
  ToNaviCtrl.AccNick = (int) ACC_AMPLIFY * (NaviAccNick / NaviCntAcc);
160
  ToNaviCtrl.AccNick = (int) ACC_AMPLIFY * (NaviAccNick / NaviCntAcc);
161
  ToNaviCtrl.AccRoll = (int) ACC_AMPLIFY * (NaviAccRoll / NaviCntAcc);
161
  ToNaviCtrl.AccRoll = (int) ACC_AMPLIFY * (NaviAccRoll / NaviCntAcc);
162
  NaviCntAcc = 0; NaviAccNick = 0; NaviAccRoll = 0;
162
  NaviCntAcc = 0; NaviAccNick = 0; NaviAccRoll = 0;
163
//  ToNaviCtrl.User8 = Parameter_UserParam8;
163
//  ToNaviCtrl.User8 = Parameter_UserParam8;
164
//  ToNaviCtrl.CalState = WinkelOut.CalcState;
164
//  ToNaviCtrl.CalState = WinkelOut.CalcState;
165
 
165
 
166
   switch(ToNaviCtrl.Command)  // 
166
   switch(ToNaviCtrl.Command)  // 
167
   {
167
   {
168
         case SPI_CMD_USER:
168
         case SPI_CMD_USER:
169
                                ToNaviCtrl.Param.Byte[0] = Parameter_UserParam1;
169
                                ToNaviCtrl.Param.Byte[0] = Parameter_UserParam1;
170
                                ToNaviCtrl.Param.Byte[1] = Parameter_UserParam2;
170
                                ToNaviCtrl.Param.Byte[1] = Parameter_UserParam2;
171
                                ToNaviCtrl.Param.Byte[2] = Parameter_UserParam3;
171
                                ToNaviCtrl.Param.Byte[2] = Parameter_UserParam3;
172
                                ToNaviCtrl.Param.Byte[3] = Parameter_UserParam4;
172
                                ToNaviCtrl.Param.Byte[3] = Parameter_UserParam4;
173
                                ToNaviCtrl.Param.Byte[4] = Parameter_UserParam5;
173
                                ToNaviCtrl.Param.Byte[4] = Parameter_UserParam5;
174
                                ToNaviCtrl.Param.Byte[5] = Parameter_UserParam6;
174
                                ToNaviCtrl.Param.Byte[5] = Parameter_UserParam6;
175
                                ToNaviCtrl.Param.Byte[6] = Parameter_UserParam7;
175
                                ToNaviCtrl.Param.Byte[6] = Parameter_UserParam7;
176
            break;
176
            break;
177
 
177
 
178
         case SPI_CMD_STICK:
178
         case SPI_CMD_STICK:
179
                tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]];  if(tmp > 128) tmp = 128; else if(tmp < -127) tmp = -127;
179
                tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]];  if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
180
                                ToNaviCtrl.Param.Byte[0] = (char) tmp;
180
                                ToNaviCtrl.Param.Byte[0] = (char) tmp;
181
                tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; if(tmp > 128) tmp = 128; else if(tmp < -127) tmp = -127;
181
                tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GIER]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
182
                                ToNaviCtrl.Param.Byte[1] = (char) tmp;
182
                                ToNaviCtrl.Param.Byte[1] = (char) tmp;
183
                tmp = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]; if(tmp > 128) tmp = 128; else if(tmp < -127) tmp = -127;
183
                tmp = PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
184
                                ToNaviCtrl.Param.Byte[2] = (char) tmp;
184
                                ToNaviCtrl.Param.Byte[2] = (char) tmp;
185
                tmp = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]; if(tmp > 128) tmp = 128; else if(tmp < -127) tmp = -127;
185
                tmp = PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]; if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
186
                                ToNaviCtrl.Param.Byte[3] = (char) tmp;
186
                                ToNaviCtrl.Param.Byte[3] = (char) tmp;
187
                                ToNaviCtrl.Param.Byte[4] = (unsigned char) Poti1;
187
                                ToNaviCtrl.Param.Byte[4] = (unsigned char) Poti1;
188
                                ToNaviCtrl.Param.Byte[5] = (unsigned char) Poti2;
188
                                ToNaviCtrl.Param.Byte[5] = (unsigned char) Poti2;
189
                                ToNaviCtrl.Param.Byte[6] = (unsigned char) Poti3;
189
                                ToNaviCtrl.Param.Byte[6] = (unsigned char) Poti3;
190
                    ToNaviCtrl.Param.Byte[7] = (unsigned char) Poti4;
190
                    ToNaviCtrl.Param.Byte[7] = (unsigned char) Poti4;
191
                    ToNaviCtrl.Param.Byte[8] = (unsigned char) SenderOkay;
191
                    ToNaviCtrl.Param.Byte[8] = (unsigned char) SenderOkay;
192
 
192
 
193
            break;
193
            break;
194
         case SPI_CMD_CAL_COMPASS:
194
         case SPI_CMD_CAL_COMPASS:
195
                if(WinkelOut.CalcState > 5)  
195
                if(WinkelOut.CalcState > 5)  
196
                  {
196
                  {
197
                    WinkelOut.CalcState = 0;    
197
                    WinkelOut.CalcState = 0;    
198
                    ToNaviCtrl.Param.Byte[0] = 5;
198
                    ToNaviCtrl.Param.Byte[0] = 5;
199
                  }  
199
                  }  
200
                                else ToNaviCtrl.Param.Byte[0] = WinkelOut.CalcState;
200
                                else ToNaviCtrl.Param.Byte[0] = WinkelOut.CalcState;
201
            break;
201
            break;
202
   }
202
   }
203
 
203
 
204
  sei();
204
  sei();
205
     
205
     
206
  if (SPI_RxDataValid)
206
  if (SPI_RxDataValid)
207
  {
207
  {
208
   if(abs(FromNaviCtrl.GPS_Nick) < 512 && abs(FromNaviCtrl.GPS_Roll) < 512 && (EE_Parameter.GlobalConfig & CFG_GPS_AKTIV))
208
   if(abs(FromNaviCtrl.GPS_Nick) < 512 && abs(FromNaviCtrl.GPS_Roll) < 512 && (EE_Parameter.GlobalConfig & CFG_GPS_AKTIV))
209
   {
209
   {
210
    GPS_Nick = FromNaviCtrl.GPS_Nick;
210
    GPS_Nick = FromNaviCtrl.GPS_Nick;
211
    GPS_Roll = FromNaviCtrl.GPS_Roll;
211
    GPS_Roll = FromNaviCtrl.GPS_Roll;
212
   }
212
   }
213
    if(FromNaviCtrl.CompassValue <= 360)   KompassValue = FromNaviCtrl.CompassValue;
213
    if(FromNaviCtrl.CompassValue <= 360)   KompassValue = FromNaviCtrl.CompassValue;
214
    KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
214
    KompassRichtung = ((540 + KompassValue - KompassStartwert) % 360) - 180;
215
 
215
 
216
    if(FromNaviCtrl.BeepTime > beeptime && !WinkelOut.CalcState) beeptime = FromNaviCtrl.BeepTime;
216
    if(FromNaviCtrl.BeepTime > beeptime && !WinkelOut.CalcState) beeptime = FromNaviCtrl.BeepTime;
217
       
217
       
218
          switch (FromNaviCtrl.Command)
218
          switch (FromNaviCtrl.Command)
219
          {
219
          {
220
            case  SPI_CMD_OSD_DATA:
220
            case  SPI_CMD_OSD_DATA:
221
//                                ToFlightCtrl.Param.Byte[0] = OsdBar;
221
//                                ToFlightCtrl.Param.Byte[0] = OsdBar;
222
//                                ToFlightCtrl.Param.Int[1]  = Distance;
222
//                                ToFlightCtrl.Param.Int[1]  = Distance;
223
                  break;
223
                  break;
224
 
224
 
225
            case  SPI_CMD_GPS_POS:
225
            case  SPI_CMD_GPS_POS:
226
//                                ToFlightCtrl.Param.Long[0]  = GPS_Data.Longitude;
226
//                                ToFlightCtrl.Param.Long[0]  = GPS_Data.Longitude;
227
//                                ToFlightCtrl.Param.Long[1]  = GPS_Data.Latitude;
227
//                                ToFlightCtrl.Param.Long[1]  = GPS_Data.Latitude;
228
                  break;
228
                  break;
229
 
229
 
230
            case  SPI_CMD_GPS_TARGET:
230
            case  SPI_CMD_GPS_TARGET:
231
//                                ToFlightCtrl.Param.Long[0]  = GPS_Data.TargetLongitude;
231
//                                ToFlightCtrl.Param.Long[0]  = GPS_Data.TargetLongitude;
232
//                                ToFlightCtrl.Param.Long[1]  = GPS_Data.TargetLatitude;
232
//                                ToFlightCtrl.Param.Long[1]  = GPS_Data.TargetLatitude;
233
                  break;
233
                  break;
234
 
234
 
235
                default:
235
                default:
236
                  break;
236
                  break;
237
          }
237
          }
238
  }
238
  }
239
  else
239
  else
240
  {
240
  {
241
//    KompassValue = 0;
241
//    KompassValue = 0;
242
//    KompassRichtung = 0;
242
//    KompassRichtung = 0;
243
       
243
       
244
        GPS_Nick = 0;
244
        GPS_Nick = 0;
245
    GPS_Roll = 0;
245
    GPS_Roll = 0;
246
  }
246
  }
247
}
247
}
248
 
248
 
249
#endif
249
#endif
250
 
250
 
251
 
251
 
252
 
252