mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-04 22:58:10 +00:00
SFHSS fix?
This commit is contained in:
parent
7438545a16
commit
181a70cb1f
@ -27,11 +27,11 @@
|
|||||||
uint8_t fhss_code; // 0-27
|
uint8_t fhss_code; // 0-27
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
SFHSS_START = 0x101,
|
SFHSS_START = 0x00,
|
||||||
SFHSS_CAL = 0x102,
|
SFHSS_CAL = 0x01,
|
||||||
SFHSS_TUNE = 0x103,
|
SFHSS_DATA1 = 0x02, // do not change
|
||||||
SFHSS_DATA1 = 0x02,
|
SFHSS_DATA2 = 0x0B, // do not change
|
||||||
SFHSS_DATA2 = 0x0b
|
SFHSS_TUNE = 0x0F
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SFHSS_FREQ0_VAL 0xC4
|
#define SFHSS_FREQ0_VAL 0xC4
|
||||||
@ -82,7 +82,7 @@ static void __attribute__((unused)) SFHSS_rf_init()
|
|||||||
for (uint8_t i = 0; i < 39; ++i)
|
for (uint8_t i = 0; i < 39; ++i)
|
||||||
CC2500_WriteReg(i, pgm_read_byte_near(&SFHSS_init_values[i]));
|
CC2500_WriteReg(i, pgm_read_byte_near(&SFHSS_init_values[i]));
|
||||||
|
|
||||||
prev_option = option+1;
|
prev_option = 0;
|
||||||
//CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
//CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
|
|
||||||
CC2500_SetTxRxMode(TX_EN);
|
CC2500_SetTxRxMode(TX_EN);
|
||||||
@ -101,7 +101,7 @@ static void __attribute__((unused)) SFHSS_tune_chan_fast()
|
|||||||
CC2500_Strobe(CC2500_SIDLE);
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
CC2500_WriteReg(CC2500_0A_CHANNR, rf_ch_num*6+16);
|
CC2500_WriteReg(CC2500_0A_CHANNR, rf_ch_num*6+16);
|
||||||
CC2500_WriteRegisterMulti(CC2500_23_FSCAL3, calData[rf_ch_num], 3);
|
CC2500_WriteRegisterMulti(CC2500_23_FSCAL3, calData[rf_ch_num], 3);
|
||||||
delayMicroseconds(6);
|
delayMicroseconds(100); //6);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SFHSS_USE_TUNE_FREQ
|
#ifdef SFHSS_USE_TUNE_FREQ
|
||||||
@ -139,7 +139,7 @@ static void __attribute__((unused)) SFHSS_build_data_packet()
|
|||||||
{
|
{
|
||||||
#define spacer1 0x02 //0b10
|
#define spacer1 0x02 //0b10
|
||||||
#define spacer2 (spacer1 << 4)
|
#define spacer2 (spacer1 << 4)
|
||||||
uint8_t ch_offset = state == SFHSS_DATA1 ? 0 : 4;
|
uint8_t ch_offset = phase == SFHSS_DATA1 ? 0 : 4;
|
||||||
uint16_t ch1 = SFHSS_convert_channel(CH_AETR[ch_offset+0]);
|
uint16_t ch1 = SFHSS_convert_channel(CH_AETR[ch_offset+0]);
|
||||||
uint16_t ch2 = SFHSS_convert_channel(CH_AETR[ch_offset+1]);
|
uint16_t ch2 = SFHSS_convert_channel(CH_AETR[ch_offset+1]);
|
||||||
uint16_t ch3 = SFHSS_convert_channel(CH_AETR[ch_offset+2]);
|
uint16_t ch3 = SFHSS_convert_channel(CH_AETR[ch_offset+2]);
|
||||||
@ -157,7 +157,7 @@ static void __attribute__((unused)) SFHSS_build_data_packet()
|
|||||||
packet[9] = (ch3 >> 1);
|
packet[9] = (ch3 >> 1);
|
||||||
packet[10] = (ch3 << 7) | spacer2 | ((ch4 >> 5) & 0x1F /*0b11111*/);
|
packet[10] = (ch3 << 7) | spacer2 | ((ch4 >> 5) & 0x1F /*0b11111*/);
|
||||||
packet[11] = (ch4 << 3) | ((fhss_code >> 2) & 0x07 /*0b111 */);
|
packet[11] = (ch4 << 3) | ((fhss_code >> 2) & 0x07 /*0b111 */);
|
||||||
packet[12] = (fhss_code << 6) | state;
|
packet[12] = (fhss_code << 6) | phase;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __attribute__((unused)) SFHSS_send_packet()
|
static void __attribute__((unused)) SFHSS_send_packet()
|
||||||
@ -168,12 +168,12 @@ static void __attribute__((unused)) SFHSS_send_packet()
|
|||||||
|
|
||||||
uint16_t ReadSFHSS()
|
uint16_t ReadSFHSS()
|
||||||
{
|
{
|
||||||
switch(state)
|
switch(phase)
|
||||||
{
|
{
|
||||||
case SFHSS_START:
|
case SFHSS_START:
|
||||||
rf_ch_num = 0;
|
rf_ch_num = 0;
|
||||||
SFHSS_tune_chan();
|
SFHSS_tune_chan();
|
||||||
state = SFHSS_CAL;
|
phase = SFHSS_CAL;
|
||||||
return 2000;
|
return 2000;
|
||||||
case SFHSS_CAL:
|
case SFHSS_CAL:
|
||||||
CC2500_ReadRegisterMulti(CC2500_23_FSCAL3, calData[rf_ch_num], 3);
|
CC2500_ReadRegisterMulti(CC2500_23_FSCAL3, calData[rf_ch_num], 3);
|
||||||
@ -182,7 +182,7 @@ uint16_t ReadSFHSS()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
rf_ch_num = 0;
|
rf_ch_num = 0;
|
||||||
state = SFHSS_DATA1;
|
phase = SFHSS_DATA1;
|
||||||
}
|
}
|
||||||
return 2000;
|
return 2000;
|
||||||
|
|
||||||
@ -190,38 +190,38 @@ uint16_t ReadSFHSS()
|
|||||||
case SFHSS_DATA1:
|
case SFHSS_DATA1:
|
||||||
SFHSS_build_data_packet();
|
SFHSS_build_data_packet();
|
||||||
SFHSS_send_packet();
|
SFHSS_send_packet();
|
||||||
state = SFHSS_DATA2;
|
phase = SFHSS_DATA2;
|
||||||
return 1650;
|
return 1650;
|
||||||
case SFHSS_DATA2:
|
case SFHSS_DATA2:
|
||||||
SFHSS_build_data_packet();
|
SFHSS_build_data_packet();
|
||||||
SFHSS_send_packet();
|
SFHSS_send_packet();
|
||||||
SFHSS_calc_next_chan();
|
SFHSS_calc_next_chan();
|
||||||
state = SFHSS_TUNE;
|
phase = SFHSS_TUNE;
|
||||||
return 2000;
|
return 2000;
|
||||||
case SFHSS_TUNE:
|
case SFHSS_TUNE:
|
||||||
#ifdef SFHSS_USE_TUNE_FREQ
|
#ifdef SFHSS_USE_TUNE_FREQ
|
||||||
SFHSS_tune_freq();
|
SFHSS_tune_freq();
|
||||||
#endif
|
#endif
|
||||||
CC2500_SetPower();
|
CC2500_SetPower();
|
||||||
state = SFHSS_DATA1;
|
phase = SFHSS_DATA1;
|
||||||
return 3150;
|
return 3150;
|
||||||
/*
|
/*
|
||||||
case SFHSS_DATA1:
|
case SFHSS_DATA1:
|
||||||
SFHSS_build_data_packet();
|
SFHSS_build_data_packet();
|
||||||
SFHSS_send_packet();
|
SFHSS_send_packet();
|
||||||
state = SFHSS_DATA2;
|
phase = SFHSS_DATA2;
|
||||||
return 1650;
|
return 1650;
|
||||||
case SFHSS_DATA2:
|
case SFHSS_DATA2:
|
||||||
SFHSS_build_data_packet();
|
SFHSS_build_data_packet();
|
||||||
SFHSS_send_packet();
|
SFHSS_send_packet();
|
||||||
state = SFHSS_CAL2;
|
phase = SFHSS_CAL2;
|
||||||
return 500;
|
return 500;
|
||||||
case SFHSS_CAL2:
|
case SFHSS_CAL2:
|
||||||
SFHSS_tune_freq();
|
SFHSS_tune_freq();
|
||||||
// CC2500_SetPower();
|
// CC2500_SetPower();
|
||||||
SFHSS_calc_next_chan();
|
SFHSS_calc_next_chan();
|
||||||
SFHSS_tune_chan();
|
SFHSS_tune_chan();
|
||||||
state = SFHSS_DATA1;
|
phase = SFHSS_DATA1;
|
||||||
return 4650;
|
return 4650;
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
@ -266,7 +266,7 @@ uint16_t initSFHSS()
|
|||||||
fhss_code=rx_tx_addr[2]%28; // Initialize it to random 0-27 inclusive
|
fhss_code=rx_tx_addr[2]%28; // Initialize it to random 0-27 inclusive
|
||||||
|
|
||||||
SFHSS_rf_init();
|
SFHSS_rf_init();
|
||||||
state = SFHSS_START;
|
phase = SFHSS_START;
|
||||||
|
|
||||||
return 10000;
|
return 10000;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user