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"); |