mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-09 22:28:12 +00:00
DSM: 11ms channel mapping
This commit is contained in:
parent
9810081b11
commit
e9933bebe7
@ -44,16 +44,25 @@ enum {
|
|||||||
uint8_t sop_col;
|
uint8_t sop_col;
|
||||||
uint8_t DSM_num_ch=0;
|
uint8_t DSM_num_ch=0;
|
||||||
uint8_t ch_map[14];
|
uint8_t ch_map[14];
|
||||||
const uint8_t PROGMEM ch_map_progmem[][12] = {
|
const uint8_t PROGMEM ch_map_progmem[][14] = {
|
||||||
{0, 1, 2, 3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, //Guess
|
//22+11ms for 4..7 channels
|
||||||
{0, 1, 2, 3, 4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, //Guess
|
{1, 0, 2, 3, 0xff, 0xff, 0xff, 1, 0, 2, 3, 0xff, 0xff, 0xff}, //4ch - Guess
|
||||||
{1, 5, 2, 3, 0, 4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, //HP6DSM
|
{1, 0, 2, 3, 4, 0xff, 0xff, 1, 0, 2, 3, 4, 0xff, 0xff}, //5ch - Guess
|
||||||
{1, 5, 2, 4, 3, 6, 0, 0xff, 0xff, 0xff, 0xff, 0xff}, //DX6i
|
{1, 5, 2, 3, 0, 4, 0xff, 1, 5, 2, 3, 0, 4, 0xff}, //6ch - HP6DSM
|
||||||
{1, 5, 2, 3, 6, 0xff, 0xff, 4, 0, 7, 0xff, 0xff}, //DX8
|
{1, 5, 2, 4, 3, 6, 0, 1, 5, 2, 4, 3, 6, 0 }, //7ch - DX6i
|
||||||
{3, 2, 1, 5, 0, 4, 6, 7, 8, 0xff, 0xff, 0xff}, //DM9
|
//22ms for 8..12 channels
|
||||||
{3, 2, 1, 5, 0, 4, 6, 7, 8, 9, 0xff, 0xff}, //Guess
|
{1, 5, 2, 3, 6, 0xff, 0xff, 4, 0, 7, 0xff, 0xff, 0xff, 0xff}, //8ch - DX8/DX7
|
||||||
{3, 2, 1, 5, 0, 4, 6, 7, 8, 9, 10, 0xff}, //Guess
|
{1, 5, 2, 3, 6, 0xff, 0xff, 4, 0, 7, 8, 0xff, 0xff, 0xff}, //9ch - Guess
|
||||||
{3, 2, 1, 5, 0, 4, 6, 7, 8, 9, 10, 11} }; //Guess
|
{1, 5, 2, 3, 6, 0xff, 0xff, 4, 0, 7, 8, 9, 0xff, 0xff}, //10ch - Guess
|
||||||
|
{1, 5, 2, 3, 6, 10, 0xff, 4, 0, 7, 8, 9, 0xff, 0xff}, //11ch - Guess
|
||||||
|
{1, 5, 2, 4, 6, 10, 0xff, 0, 7, 3, 8, 9 , 11 , 0xff}, //12ch - DX18
|
||||||
|
//11ms for 8..12 channels
|
||||||
|
{1, 5, 2, 3, 6, 7, 0xff, 1, 5, 2, 4, 0, 0xff, 0xff}, //8ch - DX7
|
||||||
|
{1, 5, 2, 3, 6, 7, 0xff, 1, 5, 2, 4, 0, 8, 0xff}, //9ch - Guess
|
||||||
|
{1, 5, 2, 3, 4, 8, 9, 1, 5, 2, 3, 0, 7, 6 }, //10ch - DX18
|
||||||
|
{1, 5, 2, 3, 4, 8, 9, 1, 5, 2, 10, 0, 7, 6 }, //11ch - Guess
|
||||||
|
{1, 5, 2, 3, 4, 8, 9, 1, 5, 11, 10, 0, 7, 6 }, //12ch - Guess
|
||||||
|
};
|
||||||
|
|
||||||
const uint8_t PROGMEM pncodes[5][8][8] = {
|
const uint8_t PROGMEM pncodes[5][8][8] = {
|
||||||
/* Note these are in order transmitted (LSB 1st) */
|
/* Note these are in order transmitted (LSB 1st) */
|
||||||
@ -229,15 +238,12 @@ static void __attribute__((unused)) update_channels()
|
|||||||
if(DSM_num_ch<4 || DSM_num_ch>12)
|
if(DSM_num_ch<4 || DSM_num_ch>12)
|
||||||
DSM_num_ch=6; // Default to 6 channels if invalid choice...
|
DSM_num_ch=6; // Default to 6 channels if invalid choice...
|
||||||
|
|
||||||
// Create channel map based on number of channels
|
// Create channel map based on number of channels and refresh rate
|
||||||
for(uint8_t i=0;i<12;i++)
|
uint8_t idx=DSM_num_ch-4;
|
||||||
ch_map[i]=pgm_read_byte_near(&ch_map_progmem[DSM_num_ch-4][i]);
|
if(DSM_num_ch>7 && (sub_protocol==DSM2_11 || sub_protocol==DSMX_11))
|
||||||
ch_map[12]=0xFF;
|
idx+=5;
|
||||||
ch_map[13]=0xFF;
|
for(uint8_t i=0;i<14;i++)
|
||||||
// TODO: if DSM2_11 or DSMX_11 then repeat lower channels to upper channels need to rewrite this part
|
ch_map[i]=pgm_read_byte_near(&ch_map_progmem[idx][i]);
|
||||||
if(DSM_num_ch<8)
|
|
||||||
for(uint8_t i=7;i<14;i++)
|
|
||||||
ch_map[i]=ch_map[i-7];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __attribute__((unused)) build_data_packet(uint8_t upper)
|
static void __attribute__((unused)) build_data_packet(uint8_t upper)
|
||||||
@ -278,7 +284,7 @@ static void __attribute__((unused)) build_data_packet(uint8_t upper)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
value=map(Servo_data[CH_TAER[idx]],servo_min_125,servo_max_125,0,max);
|
value=map(Servo_data[CH_TAER[idx]],servo_min_125,servo_max_125,0,max);
|
||||||
value |= (upper ? 0x8000 : 0) | (idx << bits);
|
value |= (upper && i==0 ? 0x8000 : 0) | (idx << bits);
|
||||||
}
|
}
|
||||||
packet[i*2+2] = (value >> 8) & 0xff;
|
packet[i*2+2] = (value >> 8) & 0xff;
|
||||||
packet[i*2+3] = (value >> 0) & 0xff;
|
packet[i*2+3] = (value >> 0) & 0xff;
|
||||||
@ -531,7 +537,7 @@ uint16_t initDsm()
|
|||||||
//Fix for OrangeRX using wrong pncodes by preventing access to "Col 8"
|
//Fix for OrangeRX using wrong pncodes by preventing access to "Col 8"
|
||||||
if(sop_col==0)
|
if(sop_col==0)
|
||||||
{
|
{
|
||||||
cyrfmfg_id[0]^=0x01; //Change year bit so sop_col will be different from 0
|
cyrfmfg_id[rx_tx_addr[0]%3]^=0x01; //Change a bit so sop_col will be different from 0
|
||||||
sop_col = (cyrfmfg_id[0] + cyrfmfg_id[1] + cyrfmfg_id[2] + 2) & 0x07;
|
sop_col = (cyrfmfg_id[0] + cyrfmfg_id[1] + cyrfmfg_id[2] + 2) & 0x07;
|
||||||
}
|
}
|
||||||
//Hopping frequencies
|
//Hopping frequencies
|
||||||
|
Loading…
x
Reference in New Issue
Block a user