Subversion Repositories FlightCtrl

Rev

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

Rev 2377 Rev 2386
Line 61... Line 61...
61
  SPI_RxDataValid = 0;
61
  SPI_RxDataValid = 0;
Line 62... Line 62...
62
 
62
 
Line 63... Line 63...
63
}
63
}
64
 
64
 
65
//------------------------------------------------------
65
//------------------------------------------------------
66
void SPI_StartTransmitPacket(void)
66
unsigned char SPI_StartTransmitPacket(void)
67
{
67
{
68
   if (!SPITransferCompleted) return;
68
   if(!SPITransferCompleted) return(0);
Line 69... Line 69...
69
   SLAVE_SELECT_PORT &=  ~(1 << SPI_SLAVE_SELECT);  // SelectSlave
69
   SLAVE_SELECT_PORT &=  ~(1 << SPI_SLAVE_SELECT);  // SelectSlave
70
   SPI_TX_Buffer = (unsigned char *) &ToNaviCtrl;
70
   SPI_TX_Buffer = (unsigned char *) &ToNaviCtrl;
Line 75... Line 75...
75
   SPITransferCompleted = 0;
75
   SPITransferCompleted = 0;
76
   UpdateSPI_Buffer();                              // update buffer
76
   UpdateSPI_Buffer();                              // update buffer
77
   SPI_BufferIndex = 1;
77
   SPI_BufferIndex = 1;
78
   ToNaviCtrl.Chksum = ToNaviCtrl.Sync1;
78
   ToNaviCtrl.Chksum = ToNaviCtrl.Sync1;
79
   SPDR = ToNaviCtrl.Sync1;                  // Start transmission
79
   SPDR = ToNaviCtrl.Sync1;                  // Start transmission
-
 
80
   return(1);
80
}
81
}
Line 81... Line 82...
81
 
82
 
82
//------------------------------------------------------
83
//------------------------------------------------------
83
//SIGNAL(SIG_SPI)
84
//SIGNAL(SIG_SPI)
Line 87... Line 88...
87
   unsigned char rxdata;
88
   unsigned char rxdata;
88
   static unsigned char rxchksum;
89
   static unsigned char rxchksum;
Line 89... Line 90...
89
 
90
 
90
   if (SPITransferCompleted) return;
91
   if (SPITransferCompleted) return;
91
   if (!(SPSR & (1 << SPIF))) return;
92
   if (!(SPSR & (1 << SPIF))) return;
92
  SendSPI = SPI_BYTEGAP;
93
  BytegapSPI = SPI_BYTEGAP;
93
//   _delay_us(30);
94
//   _delay_us(30);
Line 94... Line 95...
94
  SLAVE_SELECT_PORT |=  (1 << SPI_SLAVE_SELECT);   // DeselectSlave
95
  SLAVE_SELECT_PORT |=  (1 << SPI_SLAVE_SELECT);   // DeselectSlave
95
 
96
 
Line 170... Line 171...
170
                                ToNaviCtrl.Param.Byte[7] = Parameter_UserParam8;
171
                                ToNaviCtrl.Param.Byte[7] = Parameter_UserParam8;
171
                                ToNaviCtrl.Param.Byte[8] = FC_StatusFlags;
172
                                ToNaviCtrl.Param.Byte[8] = FC_StatusFlags;
172
//if(FC_StatusFlags2 & FC_STATUS2_WAIT_FOR_TAKEOFF) ToNaviCtrl.Param.Byte[8] &= ~FC_STATUS_FLY;
173
//if(FC_StatusFlags2 & FC_STATUS2_WAIT_FOR_TAKEOFF) ToNaviCtrl.Param.Byte[8] &= ~FC_STATUS_FLY;
173
                FC_StatusFlags &= ~(FC_STATUS_CALIBRATE | FC_STATUS_START);
174
                FC_StatusFlags &= ~(FC_STATUS_CALIBRATE | FC_STATUS_START);
174
                    ToNaviCtrl.Param.Byte[9] = ActiveParamSet;
175
                    ToNaviCtrl.Param.Byte[9] = ActiveParamSet;
175
                                ToNaviCtrl.Param.Byte[10] = EE_Parameter.ComingHomeAltitude;
176
                        ToNaviCtrl.Param.Byte[10] = (unsigned char) UBat; // 0.1V
176
                                ToNaviCtrl.Param.Byte[11] = FC_StatusFlags2;
177
                                ToNaviCtrl.Param.Byte[11] = FC_StatusFlags2;
177
                                if(!(PORTC & (1<<PORTC2))) FC_StatusFlags2 &= ~FC_STATUS2_OUT1_ACTIVE;       // Out1 (J16)
178
                                if(!(PORTC & (1<<PORTC2))) FC_StatusFlags2 &= ~FC_STATUS2_OUT1_ACTIVE;       // Out1 (J16)
178
        break;
179
        break;
179
     case SPI_FCCMD_BL_ACCU:
180
     case SPI_FCCMD_BL_ACCU:
180
                        ToNaviCtrl.Param.Int[0] = Capacity.ActualCurrent; // 0.1A
181
                        ToNaviCtrl.Param.Int[0] = Capacity.ActualCurrent; // 0.1A
181
                        ToNaviCtrl.Param.Int[1] = Capacity.UsedCapacity; // mAh
182
                        ToNaviCtrl.Param.Int[1] = Capacity.UsedCapacity; // mAh
182
                        ToNaviCtrl.Param.Byte[4] = (unsigned char) UBat; // 0.1V
-
 
183
                                ToNaviCtrl.Param.Byte[5] = GetChannelValue(EE_Parameter.NaviGpsModeChannel);  // GPS-Mode control 
183
                                ToNaviCtrl.Param.Byte[4] = GetChannelValue(EE_Parameter.NaviGpsModeChannel);  // GPS-Mode control 
184
                                ToNaviCtrl.Param.Byte[6] = VarioCharacter;
184
                                ToNaviCtrl.Param.Byte[5] = VarioCharacter;
185
                                ToNaviCtrl.Param.Byte[7] = motorindex;
185
                                ToNaviCtrl.Param.Byte[6] = motorindex;
-
 
186
                                ToNaviCtrl.Param.Byte[7] = Motor[motorindex].Version;
186
                                ToNaviCtrl.Param.Byte[8] = Motor[motorindex].MaxPWM;
187
                                ToNaviCtrl.Param.Byte[8] = Motor[motorindex].MaxPWM;
187
                                ToNaviCtrl.Param.Byte[9] = Motor[motorindex].State;
188
                                ToNaviCtrl.Param.Byte[9] = Motor[motorindex].State;
188
                                ToNaviCtrl.Param.Byte[10] = Motor[motorindex].Temperature;
189
                                ToNaviCtrl.Param.Byte[10] = Motor[motorindex].Temperature;
189
                                ToNaviCtrl.Param.Byte[11] = Motor[motorindex].Current;
190
                                ToNaviCtrl.Param.Byte[11] = Motor[motorindex].Current;
190
                                if(Mixer.Motor[++motorindex][0] == 0) // next motor is not used ?
191
                                if(Mixer.Motor[++motorindex][0] == 0) // next motor is not used ?
Line 216... Line 217...
216
                                ToNaviCtrl.Param.Byte[1] = ToNC_SpeakHoTT;
217
                                ToNaviCtrl.Param.Byte[1] = ToNC_SpeakHoTT;
217
#else
218
#else
218
                                ToNaviCtrl.Param.Byte[1] = 0;
219
                                ToNaviCtrl.Param.Byte[1] = 0;
219
#endif
220
#endif
220
                                ToNaviCtrl.Param.Byte[2] = EE_Parameter.LandingSpeed;
221
                                ToNaviCtrl.Param.Byte[2] = EE_Parameter.LandingSpeed;
-
 
222
                                ToNaviCtrl.Param.Byte[3] = EE_Parameter.ComingHomeAltitude;
221
            break;
223
            break;
222
         case SPI_FCCMD_STICK:
224
         case SPI_FCCMD_STICK:
223
              cli();
225
              cli();
224
                tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]];  if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
226
                tmp = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]];  if(tmp > 127) tmp = 127; else if(tmp < -127) tmp = -127;
225
                                ToNaviCtrl.Param.Byte[0] = (char) tmp;
227
                                ToNaviCtrl.Param.Byte[0] = (char) tmp;