Compare commits

...

2 Commits

Author SHA1 Message Date
pascallanger
2bdbd7088c Traxxas TQ 1st gen: try 5 2024-05-04 11:36:14 +02:00
pascallanger
1d3ed78622 J6Pro update 2024-05-04 11:34:59 +02:00
3 changed files with 20 additions and 13 deletions

View File

@ -326,9 +326,7 @@ const uint8_t PROGMEM DEVO_j6pro_sopcodes[][8] = {
{0xB6, 0x31, 0xAE, 0x46, 0x5A, 0xCC, 0xAE, 0x46}, {0xB6, 0x31, 0xAE, 0x46, 0x5A, 0xCC, 0xAE, 0x46},
{0x9E, 0x82, 0xDC, 0x3C, 0xA1, 0x78, 0xDC, 0x3C}, {0x9E, 0x82, 0xDC, 0x3C, 0xA1, 0x78, 0xDC, 0x3C},
{0x6F, 0x65, 0x18, 0x74, 0xB9, 0x8E, 0x19, 0x74}, {0x6F, 0x65, 0x18, 0x74, 0xB9, 0x8E, 0x19, 0x74},
#endif {0x62, 0xDF, 0xC1, 0x49, 0xDF, 0xB1, 0xC0, 0x49}, //j6pro bind
#if defined(TRAXXAS_CYRF6936_INO)
{0x62, 0xDF, 0xC1, 0x49, 0xDF, 0xB1, 0xC0, 0x49},
#endif #endif
}; };
#endif #endif

View File

@ -35,7 +35,6 @@ enum PktState {
J6PRO_CHAN_4, J6PRO_CHAN_4,
}; };
const uint8_t PROGMEM j6pro_bind_sop_code[] = {0x62, 0xdf, 0xc1, 0x49, 0xdf, 0xb1, 0xc0, 0x49};
const uint8_t j6pro_data_code[] = {0x02, 0xf9, 0x93, 0x97, 0x02, 0xfa, 0x5c, 0xe3, 0x01, 0x2b, 0xf1, 0xdb, 0x01, 0x32, 0xbe, 0x6f}; // unneeded since this is the default table after a reset const uint8_t j6pro_data_code[] = {0x02, 0xf9, 0x93, 0x97, 0x02, 0xfa, 0x5c, 0xe3, 0x01, 0x2b, 0xf1, 0xdb, 0x01, 0x32, 0xbe, 0x6f}; // unneeded since this is the default table after a reset
static void __attribute__((unused)) j6pro_build_bind_packet() static void __attribute__((unused)) j6pro_build_bind_packet()
@ -99,7 +98,7 @@ static void __attribute__((unused)) cyrf_bindinit()
/* Use when binding */ /* Use when binding */
CYRF_SetPower(0x28); //Deviation using max power, replaced by bind power... CYRF_SetPower(0x28); //Deviation using max power, replaced by bind power...
//CYRF_ConfigRFChannel(0x52); //CYRF_ConfigRFChannel(0x52);
CYRF_PROGMEM_ConfigSOPCode(j6pro_bind_sop_code); CYRF_PROGMEM_ConfigSOPCode(DEVO_j6pro_sopcodes[19]);
CYRF_ConfigCRCSeed(0x0000); CYRF_ConfigCRCSeed(0x0000);
//CYRF_WriteRegister(CYRF_06_RX_CFG, 0x4a); //CYRF_WriteRegister(CYRF_06_RX_CFG, 0x4a);
//CYRF_WriteRegister(CYRF_05_RX_CTRL, 0x80); //CYRF_WriteRegister(CYRF_05_RX_CTRL, 0x80);

View File

@ -284,7 +284,6 @@ uint16_t TRAXXAS_callback()
} }
return 10000; return 10000;
case TRAXXAS_TQ1_DATA1: case TRAXXAS_TQ1_DATA1:
//debugln_time("DATA1");
#ifdef MULTI_SYNC #ifdef MULTI_SYNC
telemetry_set_input_sync(19900); telemetry_set_input_sync(19900);
#endif #endif
@ -293,7 +292,6 @@ uint16_t TRAXXAS_callback()
phase++; phase++;
return 7100; return 7100;
case TRAXXAS_TQ1_DATA2: case TRAXXAS_TQ1_DATA2:
//debugln_time("DATA2");
CYRF_ConfigRFChannel(hopping_frequency[0]); CYRF_ConfigRFChannel(hopping_frequency[0]);
TRAXXAS_TQ1_send_data_packet(); TRAXXAS_TQ1_send_data_packet();
phase = TRAXXAS_TQ1_DATA1; phase = TRAXXAS_TQ1_DATA1;
@ -308,14 +306,16 @@ void TRAXXAS_init()
uint8_t init; uint8_t init;
if(sub_protocol == TRAXXAS_TQ1) if(sub_protocol == TRAXXAS_TQ1)
{ {
CYRF_WriteRegister(CYRF_06_RX_CFG, 0x48 | 0x02); //CYRF_WriteRegister(CYRF_06_RX_CFG, 0x48 | 0x02);
CYRF_WriteRegister(CYRF_26_XTAL_CFG, 0x08); //CYRF_WriteRegister(CYRF_26_XTAL_CFG, 0x08);
init = 5; init = 5;
} }
else //TQ2 else //TQ2
{
init = sizeof(TRAXXAS_init_vals) / 2; init = sizeof(TRAXXAS_init_vals) / 2;
for(uint8_t i = 0; i < init; i++) for(uint8_t i = 0; i < init; i++)
CYRF_WriteRegister(pgm_read_byte_near(&TRAXXAS_init_vals[i][0]), pgm_read_byte_near(&TRAXXAS_init_vals[i][1])); CYRF_WriteRegister(pgm_read_byte_near(&TRAXXAS_init_vals[i][0]), pgm_read_byte_near(&TRAXXAS_init_vals[i][1]));
}
//Read CYRF ID //Read CYRF ID
CYRF_GetMfgData(cyrfmfg_id); CYRF_GetMfgData(cyrfmfg_id);
@ -323,7 +323,7 @@ void TRAXXAS_init()
if(sub_protocol == TRAXXAS_TQ1) if(sub_protocol == TRAXXAS_TQ1)
{ {
cyrfmfg_id[3]+=RX_num; // Not needed for TQ2 since the TX and RX have to match cyrfmfg_id[3]+=RX_num; // Not needed for TQ2 since the TX and RX have to match
CYRF_FindBestChannels(hopping_frequency,1,1,0x0B,0x30, FIND_CHANNEL_ANY); // Complete guess //CYRF_FindBestChannels(hopping_frequency,1,1,0x0B,0x30, FIND_CHANNEL_ANY); // Complete guess
} }
else //TRAXXAS_TQ2 else //TRAXXAS_TQ2
CYRF_FindBestChannels(hopping_frequency,1,1,0x02,0x21, FIND_CHANNEL_ANY); CYRF_FindBestChannels(hopping_frequency,1,1,0x02,0x21, FIND_CHANNEL_ANY);
@ -360,8 +360,18 @@ void TRAXXAS_init()
bind_counter=100; bind_counter=100;
if(sub_protocol == TRAXXAS_TQ1) if(sub_protocol == TRAXXAS_TQ1)
{ {
CYRF_WriteRegister(CYRF_0F_XACT_CFG, 0x29); // Not needed... CYRF_WriteRegister(CYRF_28_CLK_EN, 0x02);
CYRF_WriteRegister(CYRF_32_AUTO_CAL_TIME, 0x3C);
CYRF_WriteRegister(CYRF_35_AUTOCAL_OFFSET, 0x14);
CYRF_WriteRegister(CYRF_26_XTAL_CFG, 0x08);
CYRF_WriteRegister(CYRF_06_RX_CFG, 0x48);
CYRF_WriteRegister(CYRF_1B_TX_OFFSET_LSB, 0x55);
CYRF_WriteRegister(CYRF_1C_TX_OFFSET_MSB, 0x05);
CYRF_WriteRegister(CYRF_0F_XACT_CFG, 0x21);
CYRF_WriteRegister(CYRF_03_TX_CFG, 0x0C);
CYRF_PROGMEM_ConfigSOPCode(DEVO_j6pro_sopcodes[0]); CYRF_PROGMEM_ConfigSOPCode(DEVO_j6pro_sopcodes[0]);
CYRF_SetTxRxMode(TX_EN);
CYRF_WriteRegister(CYRF_0F_XACT_CFG, 0x21);
if(IS_BIND_IN_PROGRESS) if(IS_BIND_IN_PROGRESS)
phase = TRAXXAS_TQ1_BIND; phase = TRAXXAS_TQ1_BIND;
else else