From 059c6baa4efa50ee5324d21edd705e4a16f16251 Mon Sep 17 00:00:00 2001 From: pascallanger Date: Fri, 26 Aug 2016 16:18:50 +0200 Subject: [PATCH] FrSkyX/SFHSS rfcal & second channel ASSAN --- Multiprotocol/ASSAN_nrf24l01.ino | 14 +++++++--- Multiprotocol/FrSkyX_cc2500.ino | 44 ++++++++++++-------------------- Multiprotocol/Multiprotocol.ino | 6 ++--- Multiprotocol/SFHSS_cc2500.ino | 4 +-- 4 files changed, 32 insertions(+), 36 deletions(-) diff --git a/Multiprotocol/ASSAN_nrf24l01.ino b/Multiprotocol/ASSAN_nrf24l01.ino index 3356e2f..3add45a 100644 --- a/Multiprotocol/ASSAN_nrf24l01.ino +++ b/Multiprotocol/ASSAN_nrf24l01.ino @@ -140,7 +140,7 @@ static void __attribute__((unused)) ASSAN_initialize_txid() packet[21]=0xFA; packet[20]=0x53; */ // Using packet[20..23] to store the ID1 and packet[24..27] to store the ID2 - uint8_t freq=0; + uint8_t freq=0,freq2; for(uint8_t i=0;i<4;i++) { uint8_t temp=rx_tx_addr[0]; @@ -153,9 +153,15 @@ static void __attribute__((unused)) ASSAN_initialize_txid() freq=((freq%25)+2)<<1; if(freq&0x02) freq|=0x01; hopping_frequency[0]=freq; - // Alternate frequency - hopping_frequency[1]=freq*2-6; - hopping_frequency[1]+=analogRead(A6)%12; // Add some random to the second channel + // Alternate frequency has some random + do + { + randomSeed((uint32_t)analogRead(A6) << 10 | analogRead(A7)); + freq2=random(0xfefefefe)%9; + freq2+=freq*2-5; + } + while( (freq2>118) || (freq2>2; //for test*************** diff --git a/Multiprotocol/Multiprotocol.ino b/Multiprotocol/Multiprotocol.ino index eb9e605..4124685 100644 --- a/Multiprotocol/Multiprotocol.ino +++ b/Multiprotocol/Multiprotocol.ino @@ -71,13 +71,13 @@ uint8_t len; uint8_t RX_num; #if defined(FRSKYX_CC2500_INO) || defined(SFHSS_CC2500_INO) -uint8_t calData[48][3]; +uint8_t calData[48]; #endif //Channel mapping for protocols const uint8_t CH_AETR[]={AILERON, ELEVATOR, THROTTLE, RUDDER, AUX1, AUX2, AUX3, AUX4, AUX5, AUX6, AUX7, AUX8}; -//const uint8_t CH_TAER[]={THROTTLE, AILERON, ELEVATOR, RUDDER, AUX1, AUX2, AUX3, AUX4, AUX5, AUX6, AUX7, AUX8}; -//const uint8_t CH_RETA[]={RUDDER, ELEVATOR, THROTTLE, AILERON, AUX1, AUX2, AUX3, AUX4, AUX5, AUX6, AUX7, AUX8}; +const uint8_t CH_TAER[]={THROTTLE, AILERON, ELEVATOR, RUDDER, AUX1, AUX2, AUX3, AUX4, AUX5, AUX6, AUX7, AUX8}; +const uint8_t CH_RETA[]={RUDDER, ELEVATOR, THROTTLE, AILERON, AUX1, AUX2, AUX3, AUX4, AUX5, AUX6, AUX7, AUX8}; const uint8_t CH_EATR[]={ELEVATOR, AILERON, THROTTLE, RUDDER, AUX1, AUX2, AUX3, AUX4, AUX5, AUX6, AUX7, AUX8}; // Mode_select variables diff --git a/Multiprotocol/SFHSS_cc2500.ino b/Multiprotocol/SFHSS_cc2500.ino index 47537ce..a9b793a 100644 --- a/Multiprotocol/SFHSS_cc2500.ino +++ b/Multiprotocol/SFHSS_cc2500.ino @@ -98,7 +98,7 @@ static void __attribute__((unused)) SFHSS_tune_chan_fast() { CC2500_Strobe(CC2500_SIDLE); CC2500_WriteReg(CC2500_0A_CHANNR, rf_ch_num*6+16); - CC2500_WriteRegisterMulti(CC2500_23_FSCAL3, calData[rf_ch_num], 3); + CC2500_WriteReg(CC2500_25_FSCAL1, calData[rf_ch_num]); } static void __attribute__((unused)) SFHSS_tune_freq() @@ -170,7 +170,7 @@ uint16_t ReadSFHSS() phase = SFHSS_CAL; return 2000; case SFHSS_CAL: - CC2500_ReadRegisterMulti(CC2500_23_FSCAL3, calData[rf_ch_num], 3); + calData[rf_ch_num]=CC2500_ReadReg(CC2500_25_FSCAL1); if (++rf_ch_num < 30) SFHSS_tune_chan(); else