Rates in Bayang and MJXQ

This commit is contained in:
Pascal Langer 2017-12-01 15:02:24 +01:00
parent e10dc6dcec
commit 7ff482dafe
4 changed files with 30 additions and 16 deletions

View File

@ -75,7 +75,9 @@ static void __attribute__((unused)) BAYANG_send_packet(uint8_t bind)
else else
{ {
uint16_t val; uint16_t val;
switch (sub_protocol) { uint8_t dyntrim = 1;
switch (sub_protocol)
{
case X16_AH: case X16_AH:
case IRDRONE: case IRDRONE:
packet[0] = 0xA6; packet[0] = 0xA6;
@ -97,22 +99,27 @@ static void __attribute__((unused)) BAYANG_send_packet(uint8_t bind)
if(Servo_AUX4) if(Servo_AUX4)
packet[2] |= BAYANG_FLAG_VIDEO; packet[2] |= BAYANG_FLAG_VIDEO;
if(Servo_AUX5) if(Servo_AUX5)
{
packet[2] |= BAYANG_FLAG_HEADLESS; packet[2] |= BAYANG_FLAG_HEADLESS;
dyntrim = 0;
}
//Flags packet[3] //Flags packet[3]
packet[3] = 0x00; packet[3] = 0x00;
if(Servo_AUX6) if(Servo_AUX6)
packet[3] = BAYANG_FLAG_INVERTED; packet[3] = BAYANG_FLAG_INVERTED;
if(Servo_AUX7) if(Servo_AUX7)
packet[3] |= BAYANG_FLAG_TAKE_OFF; dyntrim = 0;
if(Servo_AUX8) if(Servo_AUX8)
packet[3] |= BAYANG_FLAG_TAKE_OFF;
if(Servo_AUX9)
packet[3] |= BAYANG_FLAG_EMG_STOP; packet[3] |= BAYANG_FLAG_EMG_STOP;
//Aileron //Aileron
val = convert_channel_10b(AILERON); val = convert_channel_10b(AILERON);
packet[4] = (val>>8) + ((val>>2) & 0xFC); packet[4] = (val>>8) + (dyntrim ? ((val>>2) & 0xFC) : 0x7C);
packet[5] = val & 0xFF; packet[5] = val & 0xFF;
//Elevator //Elevator
val = convert_channel_10b(ELEVATOR); val = convert_channel_10b(ELEVATOR);
packet[6] = (val>>8) + ((val>>2) & 0xFC); packet[6] = (val>>8) + (dyntrim ? ((val>>2) & 0xFC) : 0x7C);
packet[7] = val & 0xFF; packet[7] = val & 0xFF;
//Throttle //Throttle
val = convert_channel_10b(THROTTLE); val = convert_channel_10b(THROTTLE);
@ -120,7 +127,7 @@ static void __attribute__((unused)) BAYANG_send_packet(uint8_t bind)
packet[9] = val & 0xFF; packet[9] = val & 0xFF;
//Rudder //Rudder
val = convert_channel_10b(RUDDER); val = convert_channel_10b(RUDDER);
packet[10] = (val>>8) + (val>>2 & 0xFC); packet[10] = (val>>8) + (dyntrim ? ((val>>2) & 0xFC) : 0x7C);
packet[11] = val & 0xFF; packet[11] = val & 0xFF;
} }
switch (sub_protocol) switch (sub_protocol)

View File

@ -105,9 +105,9 @@ static void __attribute__((unused)) MJXQ_send_packet(uint8_t bind)
packet[1] = convert_channel_s8b(RUDDER); packet[1] = convert_channel_s8b(RUDDER);
packet[4] = 0x40; // rudder does not work well with dyntrim packet[4] = 0x40; // rudder does not work well with dyntrim
packet[2] = 0x80 ^ convert_channel_s8b(ELEVATOR); packet[2] = 0x80 ^ convert_channel_s8b(ELEVATOR);
packet[5] = GET_FLAG(Servo_AUX5, 1) ? 0x40 : MJXQ_CHAN2TRIM(packet[2]); // trim elevator packet[5] = (Servo_AUX5 || Servo_AUX10) ? 0x40 : MJXQ_CHAN2TRIM(packet[2]); // trim elevator
packet[3] = convert_channel_s8b(AILERON); packet[3] = convert_channel_s8b(AILERON);
packet[6] = GET_FLAG(Servo_AUX5, 1) ? 0x40 : MJXQ_CHAN2TRIM(packet[3]); // trim aileron packet[6] = (Servo_AUX5 || Servo_AUX10) ? 0x40 : MJXQ_CHAN2TRIM(packet[3]); // trim aileron
packet[7] = rx_tx_addr[0]; packet[7] = rx_tx_addr[0];
packet[8] = rx_tx_addr[1]; packet[8] = rx_tx_addr[1];
packet[9] = rx_tx_addr[2]; packet[9] = rx_tx_addr[2];
@ -128,6 +128,7 @@ static void __attribute__((unused)) MJXQ_send_packet(uint8_t bind)
// Servo_AUX7 AUTOFLIP // X800, X600 // Servo_AUX7 AUTOFLIP // X800, X600
// Servo_AUX8 PAN // Servo_AUX8 PAN
// Servo_AUX9 TILT // Servo_AUX9 TILT
// Servo_AUX10 XTRM // Dyntrim, don't use if high.
switch(sub_protocol) switch(sub_protocol)
{ {
case H26WH: case H26WH:

View File

@ -19,7 +19,7 @@
#define VERSION_MAJOR 1 #define VERSION_MAJOR 1
#define VERSION_MINOR 1 #define VERSION_MINOR 1
#define VERSION_REVISION 6 #define VERSION_REVISION 6
#define VERSION_PATCH_LEVEL 36 #define VERSION_PATCH_LEVEL 37
//****************** //******************
// Protocols // Protocols
//****************** //******************
@ -378,6 +378,8 @@ enum FailSafeMode {
#define Servo_AUX6 (Servo_AUX & _BV(5)) #define Servo_AUX6 (Servo_AUX & _BV(5))
#define Servo_AUX7 (Servo_AUX & _BV(6)) #define Servo_AUX7 (Servo_AUX & _BV(6))
#define Servo_AUX8 (Servo_AUX & _BV(7)) #define Servo_AUX8 (Servo_AUX & _BV(7))
#define Servo_AUX9 (Servo_data[AUX9 ]>PPM_SWITCH)
#define Servo_AUX10 (Servo_data[AUX10]>PPM_SWITCH)
//************************ //************************
//*** Power settings *** //*** Power settings ***

View File

@ -379,9 +379,11 @@ Models: EAchine H8(C) mini, BayangToys X6/X7/X9, JJRC JJ850, Floureon H101 ...
Autobind protocol Autobind protocol
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10 CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11
---|---|---|---|---|---|---|---|---|---- ---|---|---|---|---|---|---|---|---|----|----
A|E|T|R|FLIP|RTH|PICTURE|VIDEO|HEADLESS|INVERTED A|E|T|R|FLIP|RTH|PICTURE|VIDEO|HEADLESS|INVERTED|RATE
RATE: -100%(default)=>higher rates by enabling dynamic trims (except for Headless), 100%=>disable dynamic trims
### Sub_protocol BAYANG - *0* ### Sub_protocol BAYANG - *0*
Option=0 -> normal Bayang protocol Option=0 -> normal Bayang protocol
@ -396,14 +398,14 @@ Same channels assignement as above.
### Sub_protocol X16_AH - *2* ### Sub_protocol X16_AH - *2*
Model: X16 AH Model: X16 AH
CH11 CH12
---- ----
TAKE_OFF TAKE_OFF
### Sub_protocol IRDRONE - *3* ### Sub_protocol IRDRONE - *3*
Model: IRDRONE Model: IRDRONE
CH11|CH12 CH12|CH13
----|---- ----|----
TAKE_OFF|EMG_STOP TAKE_OFF|EMG_STOP
@ -610,9 +612,11 @@ ARM|
## MJXQ - *18* ## MJXQ - *18*
Autobind protocol Autobind protocol
CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13 CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8|CH9|CH10|CH11|CH12|CH13|CH14
---|---|---|---|---|---|---|---|---|---|---|---|--- ---|---|---|---|---|---|---|---|---|----|----|----|----|----
A|E|T|R|FLIP|LED|PICTURE|VIDEO|HEADLESS|RTH|AUTOFLIP|PAN|TILT A|E|T|R|FLIP|LED|PICTURE|VIDEO|HEADLESS|RTH|AUTOFLIP|PAN|TILT|RATE
RATE: -100%(default)=>higher rates by enabling dynamic trims (except for Headless), 100%=>disable dynamic trims
### Sub_protocol WLH08 - *0* ### Sub_protocol WLH08 - *0*
### Sub_protocol X600 - *1* ### Sub_protocol X600 - *1*