To do this I need to make the 32U4 be able to bind the sat on it's own. I know the process how ever since I have an FC built from an arduino, and not a real FC I dont have pins to easily do the usual method of unplugging the SAT and moving it to D4,5 6. I solder all my connections (plus this is a 150mm micro build and there's no access to be plugging / unplugging a bunch of stuff).
I'm trying to figure out how the AlienWii board does it with it's bind plug. My guess is that the bind plug is simply a jumper from D4 for RX0 and when not jumped there's no connection. Is this correct? What exactly happens during the bind process? Are the bind pulses sent only on the signal pin or are the 3V3 and GND pin's pulsed in a specific order too? How can I setup this thing to need only one jumper (two pins) like the alienwii does?
Another on-topic question, when you go to bind with the alien board are you required to still go threw the MW config bind process (hooking to the GUI and pressing the bind button) or is simply closing the jumper all it takes and it's automatically in bind mode at power up? Anyone here run an alienwii brushed 32U4 board?
Ok had a look at the bind code. I'm going to give it a try later (after my mail with my new soldering iron tips gets here later today) with the 3V3 and GND pin's left constant and the signal line moved to a pin it can control. It definitely pulses both + and GND but I'm not sure why / if it's required...
Code: Select all
#if defined(SPEK_BIND) // Bind Support
void spekBind() {
pinMode(SPEK_BIND_DATA, INPUT); // Data line from sat
digitalWrite(SPEK_BIND_DATA,LOW); // Turn off internal Pull Up resistor
pinMode(SPEK_BIND_GROUND, INPUT);
digitalWrite(SPEK_BIND_GROUND,LOW);
pinMode(SPEK_BIND_GROUND, OUTPUT);
digitalWrite(SPEK_BIND_GROUND,LOW);
pinMode(SPEK_BIND_POWER, INPUT);
digitalWrite(SPEK_BIND_POWER,LOW);
pinMode(SPEK_BIND_POWER,OUTPUT);
while(1) { //Do not return. User presses reset button to return to normal.
blinkLED(4,255,1);
digitalWrite(SPEK_BIND_POWER,LOW); // Power off sat
pinMode(SPEK_BIND_DATA, OUTPUT);
digitalWrite(SPEK_BIND_DATA,LOW);
delay(1000);
blinkLED(4,255,1);
digitalWrite(SPEK_BIND_POWER,HIGH); // Power on sat
delay(10);
digitalWrite(SPEK_BIND_DATA,HIGH);
delay(60); // Keep data pin steady for 20 to 120ms after power up
noInterrupts();
for (byte i = 0; i < SPEK_BIND_PULSES; i++) {
digitalWrite(SPEK_BIND_DATA,LOW);
delayMicroseconds(118);
digitalWrite(SPEK_BIND_DATA,HIGH);
delayMicroseconds(122);
}
interrupts();
delay(60000); //Allow one full minute to bind, then try again.
}
}