Subversion Repositories FlightCtrl

Rev

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

Rev 2462 Rev 2466
Line 207... Line 207...
207
// + Check connected BL-Ctrls
207
// + Check connected BL-Ctrls
208
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
208
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
209
        // Check connected BL-Ctrls
209
        // Check connected BL-Ctrls
210
        BLFlags |= BLFLAG_READ_VERSION;
210
        BLFlags |= BLFLAG_READ_VERSION;
211
        motor_read = 0;  // read the first I2C-Data
211
        motor_read = 0;  // read the first I2C-Data
-
 
212
        for(i=0; i < 500; i++)
-
 
213
        {
212
        SendMotorData();
214
         SendMotorData();
213
        timer = SetDelay(500);
215
         timer = SetDelay(5);
214
        while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer
216
         while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer
215
 
217
    }
216
    printf("\n\rFound BL-Ctrl: ");
218
    printf("\n\rFound BL-Ctrl: ");
217
    timer = SetDelay(4000);
219
//    timer = SetDelay(1000);
218
        for(i=0; i < MAX_MOTORS; i++)
220
        for(i=0; i < MAX_MOTORS; i++)
219
        {
221
        {
220
                SendMotorData();
222
//              SendMotorData();
221
                while(!(BLFlags & BLFLAG_TX_COMPLETE)  && !CheckDelay(timer)); //wait for complete transfer
223
//              while(!(BLFlags & BLFLAG_TX_COMPLETE)  && !CheckDelay(timer)); //wait for complete transfer
222
                if(Mixer.Motor[i][0] > 0) // wait max 4 sec for the BL-Ctrls to wake up
224
                if(Mixer.Motor[i][0] > 0) // wait max 4 sec for the BL-Ctrls to wake up
223
                {
225
                {
224
                        while(!CheckDelay(timer) && !(Motor[i].State & MOTOR_STATE_PRESENT_MASK) )
226
                        while(!CheckDelay(timer) && !(Motor[i].State & MOTOR_STATE_PRESENT_MASK) )
225
                        {
227
                        {
226
                                SendMotorData();
228
                                SendMotorData();
227
                                while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer
229
                                while(!(BLFlags & BLFLAG_TX_COMPLETE) && !CheckDelay(timer)); //wait for complete transfer
228
                        }
230
                        }
229
                }
231
                }
230
                if(Motor[i].State & MOTOR_STATE_PRESENT_MASK)
232
                if(Motor[i].State & MOTOR_STATE_PRESENT_MASK)
231
                {
233
                {
-
 
234
                    unsigned char vers;
232
                        printf("%d",i+1);
235
                        printf("%d",(i+1)%10);
233
                        FoundMotors++;
236
                        FoundMotors++;
-
 
237
                        vers = Motor[i].VersionMajor * 100 + Motor[i].VersionMinor; // creates 104 from 1.04
-
 
238
                        if(vers && VersionInfo.BL_Firmware > vers) VersionInfo.BL_Firmware = vers;
234
//                      if(Motor[i].Version & MOTOR_STATE_FAST_MODE) printf("(fast)\n\r");
239
//                      if(Motor[i].Version & MOTOR_STATE_FAST_MODE) printf("(fast)\n\r");
235
//                      else if(Motor[i].Version & MOTOR_STATE_NEW_PROTOCOL_MASK) printf("(new)\n\r");
240
//                      else if(Motor[i].Version & MOTOR_STATE_NEW_PROTOCOL_MASK) printf("(new)\n\r");
-
 
241
//                      printf(":V%03d\n\r",vers);
236
                }
242
                }
237
        }
243
        }
238
        for(i=0; i < MAX_MOTORS; i++)
244
        for(i=0; i < MAX_MOTORS; i++)
239
        {
245
        {
240
                if(!(Motor[i].State & MOTOR_STATE_PRESENT_MASK) && Mixer.Motor[i][0] > 0)
246
                if(!(Motor[i].State & MOTOR_STATE_PRESENT_MASK) && Mixer.Motor[i][0] > 0)
Line 242... Line 248...
242
                        printf("\n\r\n\r!! MISSING BL-CTRL: %d !!",i+1);
248
                        printf("\n\r\n\r!! MISSING BL-CTRL: %d !!",i+1);
243
                        ServoActive = 2; // just in case the FC would be used as camera-stabilizer
249
                        ServoActive = 2; // just in case the FC would be used as camera-stabilizer
244
                }
250
                }
245
                Motor[i].State &= ~MOTOR_STATE_ERROR_MASK; // clear error counter
251
                Motor[i].State &= ~MOTOR_STATE_ERROR_MASK; // clear error counter
246
        }
252
        }
-
 
253
#if (defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__))
-
 
254
   if(VersionInfo.BL_Firmware != 255)
-
 
255
    {
-
 
256
         printf("\n\rBL-Firmware %d.%02d",VersionInfo.BL_Firmware/100,VersionInfo.BL_Firmware%100);
-
 
257
         if(VersionInfo.BL_Firmware >= 100 && VersionInfo.BL_Firmware <= 102) printf("<-- warning old Version!");
-
 
258
        }
-
 
259
#endif
-
 
260
 
247
   PrintLine();// ("\n\r===================================");
261
   PrintLine();// ("\n\r===================================");
248
    if(RequiredMotors < FoundMotors) VersionInfo.HardwareError[1] |= FC_ERROR1_MIXER;
262
    if(RequiredMotors < FoundMotors) VersionInfo.HardwareError[1] |= FC_ERROR1_MIXER;
249
        if(RequiredMotors > 8) Max_I2C_Packets = 8; else Max_I2C_Packets = RequiredMotors;
263
        if(RequiredMotors > 8) Max_I2C_Packets = 8; else Max_I2C_Packets = RequiredMotors;
250
#else
264
#else
251
 printf("\n\r\n\r--> REDUNDANT SLAVE <---\n\r");
265
 printf("\n\r\n\r--> REDUNDANT SLAVE <---\n\r");
Line 303... Line 317...
303
//printf("\n\rEE_Parameter size:%i\n\r", PARAMSET_STRUCT_LEN);
317
//printf("\n\rEE_Parameter size:%i\n\r", PARAMSET_STRUCT_LEN);
Line 304... Line 318...
304
 
318
 
305
    DebugOut.Status[0] = 0x01 | 0x02;
319
    DebugOut.Status[0] = 0x01 | 0x02;
306
        JetiBeep = 0;
320
        JetiBeep = 0;
-
 
321
    if(EE_Parameter.ExtraConfig & CFG_NO_RCOFF_BEEPING)   DisableRcOffBeeping = 1;
307
    if(EE_Parameter.ExtraConfig & CFG_NO_RCOFF_BEEPING)   DisableRcOffBeeping = 1;
322
        ReadBlSize = 3; // don't read the version any more
308
#ifdef REDUNDANT_FC_SLAVE
323
#ifdef REDUNDANT_FC_SLAVE
309
        timer = SetDelay(2500);
324
        timer = SetDelay(2500);
310
        while(!CheckDelay(timer));
325
        while(!CheckDelay(timer));
311
        printf("\n\rStart\n\r");
326
        printf("\n\rStart\n\r");