Update FrSkyX_cc2500.ino

This commit is contained in:
midelic 2016-08-26 21:15:07 +01:00 committed by GitHub
parent 19e7bc9b30
commit a8797b3f4a

View File

@ -21,7 +21,6 @@
#include "iface_cc2500.h" #include "iface_cc2500.h"
uint8_t chanskip; uint8_t chanskip;
uint8_t channr;
uint8_t counter_rst; uint8_t counter_rst;
uint8_t ctr; uint8_t ctr;
uint8_t FS_flag=0; uint8_t FS_flag=0;
@ -85,10 +84,8 @@ static uint8_t __attribute__((unused)) hop(uint8_t byte)
static void __attribute__((unused)) set_start(uint8_t ch ) static void __attribute__((unused)) set_start(uint8_t ch )
{ {
CC2500_Strobe(CC2500_SIDLE); CC2500_Strobe(CC2500_SIDLE);
CC2500_WriteReg(CC2500_23_FSCAL3, calData[ch][0]); CC2500_WriteReg(CC2500_25_FSCAL1, calData[ch]);
CC2500_WriteReg(CC2500_24_FSCAL2, calData[ch][1]); CC2500_WriteReg(CC2500_0A_CHANNR, ch==47? 0:hop(ch));
CC2500_WriteReg(CC2500_25_FSCAL1, calData[ch][2]);
CC2500_WriteReg(CC2500_0A_CHANNR, ch==47? 0:pgm_read_word(&hop_data[ch]));
} }
static void __attribute__((unused)) frskyX_init() static void __attribute__((unused)) frskyX_init()
@ -132,20 +129,16 @@ static void __attribute__((unused)) frskyX_init()
for(uint8_t c=0;c < 47;c++) for(uint8_t c=0;c < 47;c++)
{//calibrate hop channels {//calibrate hop channels
CC2500_Strobe(CC2500_SIDLE); CC2500_Strobe(CC2500_SIDLE);
CC2500_WriteReg(CC2500_0A_CHANNR,pgm_read_word(&hop_data[c])); CC2500_WriteReg(CC2500_0A_CHANNR,hop(c));
CC2500_Strobe(CC2500_SCAL); CC2500_Strobe(CC2500_SCAL);
delayMicroseconds(900);// delayMicroseconds(900);//
calData[c][0] = CC2500_ReadReg(CC2500_23_FSCAL3); calData[c] = CC2500_ReadReg(CC2500_25_FSCAL1);
calData[c][1] = CC2500_ReadReg(CC2500_24_FSCAL2);
calData[c][2] = CC2500_ReadReg(CC2500_25_FSCAL1);
} }
CC2500_Strobe(CC2500_SIDLE); CC2500_Strobe(CC2500_SIDLE);
CC2500_WriteReg(CC2500_0A_CHANNR,0x00); CC2500_WriteReg(CC2500_0A_CHANNR,0x00);
CC2500_Strobe(CC2500_SCAL); CC2500_Strobe(CC2500_SCAL);
delayMicroseconds(900); delayMicroseconds(900);
calData[47][0] = CC2500_ReadReg(CC2500_23_FSCAL3); calData[47] = CC2500_ReadReg(CC2500_25_FSCAL1);
calData[47][1] = CC2500_ReadReg(CC2500_24_FSCAL2);
calData[47][2] = CC2500_ReadReg(CC2500_25_FSCAL1);
//#######END INIT######## //#######END INIT########
} }
@ -189,11 +182,11 @@ static void __attribute__((unused)) frskyX_build_bind_packet()
packet[4] = rx_tx_addr[2]; packet[4] = rx_tx_addr[2];
int idx = ((state -FRSKY_BIND) % 10) * 5; int idx = ((state -FRSKY_BIND) % 10) * 5;
packet[5] = idx; packet[5] = idx;
packet[6] = pgm_read_word(&hop_data[idx++]); packet[6] = hop(idx++);
packet[7] = pgm_read_word(&hop_data[idx++]); packet[7] = hop(idx++);
packet[8] = pgm_read_word(&hop_data[idx++]); packet[8] = hop(idx++);
packet[9] = pgm_read_word(&hop_data[idx++]); packet[9] = hop(idx++);
packet[10] = pgm_read_word(&hop_data[idx++]); packet[10] = hop(idx++);
packet[11] = 0x02; packet[11] = 0x02;
packet[12] = RX_num; packet[12] = RX_num;
// //
@ -219,7 +212,7 @@ static void __attribute__((unused)) frskyX_data_frame()
packet[2] = rx_tx_addr[2]; packet[2] = rx_tx_addr[2];
packet[3] = 0x02; packet[3] = 0x02;
// //
packet[4] = (ctr<<6)+channr; packet[4] = (ctr<<6)+hopping_frequency_no;
packet[5] = counter_rst; packet[5] = counter_rst;
packet[6] = RX_num; packet[6] = RX_num;
//FLAGS 00 - standard packet //FLAGS 00 - standard packet
@ -283,7 +276,7 @@ uint16_t ReadFrSkyX()
return 9000; return 9000;
case FRSKY_BIND_DONE: case FRSKY_BIND_DONE:
initialize_data(0); initialize_data(0);
channr=0; hopping_frequency_no = 0;
BIND_DONE; BIND_DONE;
state++; state++;
break; break;
@ -295,10 +288,10 @@ uint16_t ReadFrSkyX()
} }
LED_ON; LED_ON;
CC2500_SetTxRxMode(TX_EN); CC2500_SetTxRxMode(TX_EN);
set_start(channr); set_start(hopping_frequency_no);
CC2500_SetPower(); CC2500_SetPower();
CC2500_Strobe(CC2500_SFRX); CC2500_Strobe(CC2500_SFRX);
channr = (channr+chanskip)%47; hopping_frequency_no = (hopping_frequency_no+chanskip)%47;
CC2500_Strobe(CC2500_SIDLE); CC2500_Strobe(CC2500_SIDLE);
CC2500_WriteData(packet, packet[0]+1); CC2500_WriteData(packet, packet[0]+1);
// //