mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-02-09 22:48:12 +00:00
New Redpine protocol
Protocol Redpine: 50 Sub protocol: Fast=0, Slow=1 Option=freq tunning
This commit is contained in:
parent
9d50171034
commit
d940a7e49a
@ -47,4 +47,5 @@
|
|||||||
47,GD00X,GD_V1,GD_V2
|
47,GD00X,GD_V1,GD_V2
|
||||||
48,V761
|
48,V761
|
||||||
49,KF606
|
49,KF606
|
||||||
|
50,REDPINE,FAST,SLOW
|
||||||
63,XN_DUMP,250K,1M,2M
|
63,XN_DUMP,250K,1M,2M
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#define VERSION_MAJOR 1
|
#define VERSION_MAJOR 1
|
||||||
#define VERSION_MINOR 2
|
#define VERSION_MINOR 2
|
||||||
#define VERSION_REVISION 1
|
#define VERSION_REVISION 1
|
||||||
#define VERSION_PATCH_LEVEL 61
|
#define VERSION_PATCH_LEVEL 62
|
||||||
|
|
||||||
//******************
|
//******************
|
||||||
// Protocols
|
// Protocols
|
||||||
@ -76,6 +76,7 @@ enum PROTOCOLS
|
|||||||
PROTO_GD00X = 47, // =>NRF24L01
|
PROTO_GD00X = 47, // =>NRF24L01
|
||||||
PROTO_V761 = 48, // =>NRF24L01
|
PROTO_V761 = 48, // =>NRF24L01
|
||||||
PROTO_KF606 = 49, // =>NRF24L01
|
PROTO_KF606 = 49, // =>NRF24L01
|
||||||
|
PROTO_REDPINE = 50, // =>CC2500
|
||||||
PROTO_XN297DUMP = 63, // =>NRF24L01
|
PROTO_XN297DUMP = 63, // =>NRF24L01
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -270,6 +271,11 @@ enum BUGSMINI
|
|||||||
BUGSMINI= 0,
|
BUGSMINI= 0,
|
||||||
BUGS3H = 1,
|
BUGS3H = 1,
|
||||||
};
|
};
|
||||||
|
enum REDPINE
|
||||||
|
{
|
||||||
|
RED_FAST= 0,
|
||||||
|
RED_SLOW= 1,
|
||||||
|
};
|
||||||
#define NONE 0
|
#define NONE 0
|
||||||
#define P_HIGH 1
|
#define P_HIGH 1
|
||||||
#define P_LOW 0
|
#define P_LOW 0
|
||||||
@ -613,6 +619,7 @@ Serial: 100000 Baud 8e2 _ xxxx xxxx p --
|
|||||||
GD00X 47
|
GD00X 47
|
||||||
V761 48
|
V761 48
|
||||||
KF606 49
|
KF606 49
|
||||||
|
REDPINE 50
|
||||||
BindBit=> 0x80 1=Bind/0=No
|
BindBit=> 0x80 1=Bind/0=No
|
||||||
AutoBindBit=> 0x40 1=Yes /0=No
|
AutoBindBit=> 0x40 1=Yes /0=No
|
||||||
RangeCheck=> 0x20 1=Yes /0=No
|
RangeCheck=> 0x20 1=Yes /0=No
|
||||||
@ -749,6 +756,9 @@ Serial: 100000 Baud 8e2 _ xxxx xxxx p --
|
|||||||
sub_protocol==GD00X
|
sub_protocol==GD00X
|
||||||
GD_V1 0
|
GD_V1 0
|
||||||
GD_V2 1
|
GD_V2 1
|
||||||
|
sub_protocol==REDPINE
|
||||||
|
RED_FAST 0
|
||||||
|
RED_SLOW 1
|
||||||
|
|
||||||
Power value => 0x80 0=High/1=Low
|
Power value => 0x80 0=High/1=Low
|
||||||
Stream[3] = option_protocol;
|
Stream[3] = option_protocol;
|
||||||
|
@ -113,7 +113,7 @@ uint8_t len;
|
|||||||
uint8_t armed, arm_flags, arm_channel_previous;
|
uint8_t armed, arm_flags, arm_channel_previous;
|
||||||
|
|
||||||
#ifdef CC2500_INSTALLED
|
#ifdef CC2500_INSTALLED
|
||||||
uint8_t calData[48];
|
uint8_t calData[50];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CHECK_FOR_BOOTLOADER
|
#ifdef CHECK_FOR_BOOTLOADER
|
||||||
@ -442,6 +442,11 @@ void setup()
|
|||||||
option = FORCE_CORONA_TUNING; // Use config-defined tuning value for CORONA
|
option = FORCE_CORONA_TUNING; // Use config-defined tuning value for CORONA
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(FORCE_REDPINE_TUNING) && defined(REDPINE_CC2500_INO)
|
||||||
|
if (protocol==PROTO_REDPINE)
|
||||||
|
option = FORCE_REDPINE_TUNING; // Use config-defined tuning value for REDPINE
|
||||||
|
else
|
||||||
|
#endif
|
||||||
#if defined(FORCE_HITEC_TUNING) && defined(HITEC_CC2500_INO)
|
#if defined(FORCE_HITEC_TUNING) && defined(HITEC_CC2500_INO)
|
||||||
if (protocol==PROTO_HITEC)
|
if (protocol==PROTO_HITEC)
|
||||||
option = FORCE_HITEC_TUNING; // Use config-defined tuning value for HITEC
|
option = FORCE_HITEC_TUNING; // Use config-defined tuning value for HITEC
|
||||||
@ -969,6 +974,14 @@ static void protocol_init()
|
|||||||
remote_callback = ReadCORONA;
|
remote_callback = ReadCORONA;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(REDPINE_CC2500_INO)
|
||||||
|
case PROTO_REDPINE:
|
||||||
|
PE1_off; //antenna RF2
|
||||||
|
PE2_on;
|
||||||
|
next_callback = initREDPINE();
|
||||||
|
remote_callback = ReadREDPINE;
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
#if defined(HITEC_CC2500_INO)
|
#if defined(HITEC_CC2500_INO)
|
||||||
case PROTO_HITEC:
|
case PROTO_HITEC:
|
||||||
PE1_off; //antenna RF2
|
PE1_off; //antenna RF2
|
||||||
@ -1321,6 +1334,11 @@ void update_serial_data()
|
|||||||
option=FORCE_CORONA_TUNING; // Use config-defined tuning value for CORONA
|
option=FORCE_CORONA_TUNING; // Use config-defined tuning value for CORONA
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(FORCE_REDPINE_TUNING) && defined(REDPINE_CC2500_INO)
|
||||||
|
if (protocol==PROTO_REDPINE)
|
||||||
|
option=FORCE_REDPINE_TUNING; // Use config-defined tuning value for REDPINE
|
||||||
|
else
|
||||||
|
#endif
|
||||||
#if defined(FORCE_HITEC_TUNING) && defined(HITEC_CC2500_INO)
|
#if defined(FORCE_HITEC_TUNING) && defined(HITEC_CC2500_INO)
|
||||||
if (protocol==PROTO_HITEC)
|
if (protocol==PROTO_HITEC)
|
||||||
option=FORCE_HITEC_TUNING; // Use config-defined tuning value for HITEC
|
option=FORCE_HITEC_TUNING; // Use config-defined tuning value for HITEC
|
||||||
|
242
Multiprotocol/Redpine_cc2500.ino
Normal file
242
Multiprotocol/Redpine_cc2500.ino
Normal file
@ -0,0 +1,242 @@
|
|||||||
|
/*
|
||||||
|
This project is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
Multiprotocol is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with Multiprotocol. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(REDPINE_CC2500_INO)
|
||||||
|
|
||||||
|
#include "iface_cc2500.h"
|
||||||
|
|
||||||
|
#define REDPINE_LOOPTIME_FAST 9 //9ms
|
||||||
|
#define REDPINE_LOOPTIME_SLOW 22 //22ms
|
||||||
|
|
||||||
|
#define REDPINE_BIND 1000
|
||||||
|
#define REDPINE_PACKET_SIZE 11
|
||||||
|
#define REDPINE_FEC false // from cc2500 datasheet: The convolutional coder is a rate 1/2 code with a constraint length of m=4
|
||||||
|
#define REDPINE_NUM_HOPS 50
|
||||||
|
|
||||||
|
static void REDPINE_set_channel(uint8_t ch)
|
||||||
|
{
|
||||||
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
|
CC2500_WriteReg(CC2500_25_FSCAL1, calData[ch]);
|
||||||
|
CC2500_WriteReg(CC2500_0A_CHANNR, hopping_frequency[ch]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void REDPINE_build_bind_packet()
|
||||||
|
{
|
||||||
|
memset(&packet[0], 0, REDPINE_PACKET_SIZE);
|
||||||
|
|
||||||
|
packet[0] = REDPINE_PACKET_SIZE - 1;
|
||||||
|
packet[1] = 0x03;
|
||||||
|
packet[2] = 0x01;
|
||||||
|
packet[3] = rx_tx_addr[2];
|
||||||
|
packet[4] = rx_tx_addr[3]; // Use RX_Num
|
||||||
|
uint16_t idx = ((REDPINE_BIND - bind_counter) % 10) * 5;
|
||||||
|
packet[5] = idx;
|
||||||
|
packet[6] = hopping_frequency[idx++];
|
||||||
|
packet[7] = hopping_frequency[idx++];
|
||||||
|
packet[8] = hopping_frequency[idx++];
|
||||||
|
packet[9] = hopping_frequency[idx++];
|
||||||
|
packet[10] = hopping_frequency[idx++];
|
||||||
|
// packet[11] = 0x02;
|
||||||
|
// packet[12] = RXNUM;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint16_t Redpine_Scale(uint8_t chan)
|
||||||
|
{
|
||||||
|
uint16_t chan_val=Channel_data[chan]; // -125%..+125% <=> 0..2047
|
||||||
|
if (chan_val > 2046) chan_val = 2046;
|
||||||
|
else if (chan_val < 10) chan_val = 10;
|
||||||
|
return chan_val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void REDPINE_data_frame() {
|
||||||
|
uint16_t chan[4];
|
||||||
|
|
||||||
|
memset(&packet[0], 0, REDPINE_PACKET_SIZE);
|
||||||
|
|
||||||
|
packet[0] = REDPINE_PACKET_SIZE - 1;
|
||||||
|
packet[1] = rx_tx_addr[2];
|
||||||
|
packet[2] = rx_tx_addr[3]; // Use RX_Num
|
||||||
|
|
||||||
|
chan[0] = Redpine_Scale(0);
|
||||||
|
chan[1] = Redpine_Scale(1);
|
||||||
|
chan[2] = Redpine_Scale(2);
|
||||||
|
chan[3] = Redpine_Scale(3);
|
||||||
|
|
||||||
|
packet[3] = chan[0];
|
||||||
|
packet[4] = (((chan[0] >> 8) & 0x07) | (chan[1] << 4)) | GET_FLAG(CH5_SW, 0x08);
|
||||||
|
packet[5] = ((chan[1] >> 4) & 0x7F) | GET_FLAG(CH6_SW, 0x80);
|
||||||
|
packet[6] = chan[2];
|
||||||
|
packet[7] = (((chan[2] >> 8) & 0x07) | (chan[3] << 4)) | GET_FLAG(CH7_SW, 0x08);
|
||||||
|
packet[8] = ((chan[3] >> 4) & 0x7F) | GET_FLAG(CH8_SW, 0x80);
|
||||||
|
packet[9] = GET_FLAG(CH9_SW, 0x01)
|
||||||
|
| GET_FLAG(CH10_SW, 0x02)
|
||||||
|
| GET_FLAG(CH11_SW, 0x04)
|
||||||
|
| GET_FLAG(CH12_SW, 0x08)
|
||||||
|
| GET_FLAG(CH13_SW, 0x10)
|
||||||
|
| GET_FLAG(CH14_SW, 0x20)
|
||||||
|
| GET_FLAG(CH15_SW, 0x40)
|
||||||
|
| GET_FLAG(CH16_SW, 0x80);
|
||||||
|
|
||||||
|
if (sub_protocol==0)
|
||||||
|
packet[10] = REDPINE_LOOPTIME_FAST;
|
||||||
|
else
|
||||||
|
packet[10] = REDPINE_LOOPTIME_SLOW;
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint16_t ReadREDPINE()
|
||||||
|
{
|
||||||
|
if ( prev_option != option )
|
||||||
|
{ // Frequency adjust
|
||||||
|
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
|
prev_option = option ;
|
||||||
|
}
|
||||||
|
if(IS_BIND_IN_PROGRESS)
|
||||||
|
{
|
||||||
|
if(bind_counter== REDPINE_BIND)
|
||||||
|
REDPINE_init(0);
|
||||||
|
if(state == REDPINE_BIND/2)
|
||||||
|
REDPINE_init(1);
|
||||||
|
REDPINE_set_channel(49);
|
||||||
|
CC2500_SetPower();
|
||||||
|
CC2500_Strobe(CC2500_SFRX);
|
||||||
|
REDPINE_build_bind_packet();
|
||||||
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
|
CC2500_WriteData(packet, REDPINE_PACKET_SIZE);
|
||||||
|
if(--bind_counter==0)
|
||||||
|
{
|
||||||
|
BIND_DONE;
|
||||||
|
REDPINE_init(sub_protocol);
|
||||||
|
}
|
||||||
|
return 9000;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CC2500_SetTxRxMode(TX_EN);
|
||||||
|
REDPINE_set_channel(hopping_frequency_no);
|
||||||
|
CC2500_SetPower();
|
||||||
|
CC2500_Strobe(CC2500_SFRX);
|
||||||
|
REDPINE_data_frame();
|
||||||
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
|
hopping_frequency_no = (hopping_frequency_no + 1) % 49;
|
||||||
|
CC2500_WriteData(packet, REDPINE_PACKET_SIZE);
|
||||||
|
if (sub_protocol==0)
|
||||||
|
return REDPINE_LOOPTIME_FAST*100;
|
||||||
|
else
|
||||||
|
return REDPINE_LOOPTIME_SLOW*100;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// register, fast 250k, slow
|
||||||
|
static const uint8_t REDPINE_init_data[][3] = {
|
||||||
|
{CC2500_00_IOCFG2, 0x06, 0x06},
|
||||||
|
{CC2500_02_IOCFG0, 0x06, 0x06},
|
||||||
|
{CC2500_03_FIFOTHR, 0x07, 0x07},
|
||||||
|
{CC2500_07_PKTCTRL1, 0x04, 0x04},
|
||||||
|
{CC2500_08_PKTCTRL0, 0x05, 0x05},
|
||||||
|
{CC2500_09_ADDR, 0x00, 0x00},
|
||||||
|
{CC2500_0B_FSCTRL1, 0x0A, 0x0A},
|
||||||
|
{CC2500_0C_FSCTRL0, 0x00, 0x00},
|
||||||
|
{CC2500_0D_FREQ2, 0x5D, 0x5c},
|
||||||
|
{CC2500_0E_FREQ1, 0x93, 0x76},
|
||||||
|
{CC2500_0F_FREQ0, 0xB1, 0x27},
|
||||||
|
{CC2500_10_MDMCFG4, 0x2D, 0x7B},
|
||||||
|
{CC2500_11_MDMCFG3, 0x3B, 0x61},
|
||||||
|
{CC2500_12_MDMCFG2, 0x73, 0x13},
|
||||||
|
#ifdef REDPINE_FEC
|
||||||
|
{CC2500_13_MDMCFG1, 0xA3, 0xA3},
|
||||||
|
#else
|
||||||
|
{CC2500_13_MDMCFG1, 0x23, 0x23},
|
||||||
|
#endif
|
||||||
|
{CC2500_14_MDMCFG0, 0x56, 0x7a}, // Chan space
|
||||||
|
{CC2500_15_DEVIATN, 0x00, 0x51},
|
||||||
|
{CC2500_17_MCSM1, 0x0c, 0x0c},
|
||||||
|
{CC2500_18_MCSM0, 0x08, 0x08}, //??? 0x18, 0x18},
|
||||||
|
{CC2500_19_FOCCFG, 0x1D, 0x16},
|
||||||
|
{CC2500_1A_BSCFG, 0x1C, 0x6c},
|
||||||
|
{CC2500_1B_AGCCTRL2, 0xC7, 0x43},
|
||||||
|
{CC2500_1C_AGCCTRL1, 0x00, 0x40},
|
||||||
|
{CC2500_1D_AGCCTRL0, 0xB0, 0x91},
|
||||||
|
{CC2500_21_FREND1, 0xB6, 0x56},
|
||||||
|
{CC2500_22_FREND0, 0x10, 0x10},
|
||||||
|
{CC2500_23_FSCAL3, 0xEA, 0xA9},
|
||||||
|
{CC2500_24_FSCAL2, 0x0A, 0x0A},
|
||||||
|
{CC2500_25_FSCAL1, 0x00, 0x00},
|
||||||
|
{CC2500_26_FSCAL0, 0x11, 0x11},
|
||||||
|
{CC2500_29_FSTEST, 0x59, 0x59},
|
||||||
|
{CC2500_2C_TEST2, 0x88, 0x88},
|
||||||
|
{CC2500_2D_TEST1, 0x31, 0x31},
|
||||||
|
{CC2500_2E_TEST0, 0x0B, 0x0B},
|
||||||
|
{CC2500_3E_PATABLE, 0xff, 0xff}
|
||||||
|
};
|
||||||
|
|
||||||
|
static void REDPINE_init(uint8_t format)
|
||||||
|
{
|
||||||
|
CC2500_Reset();
|
||||||
|
|
||||||
|
CC2500_WriteReg(CC2500_06_PKTLEN, REDPINE_PACKET_SIZE);
|
||||||
|
|
||||||
|
for (uint8_t i=0; i < ((sizeof REDPINE_init_data) / (sizeof REDPINE_init_data[0])); i++)
|
||||||
|
CC2500_WriteReg(REDPINE_init_data[i][0], REDPINE_init_data[i][format+1]);
|
||||||
|
|
||||||
|
prev_option = option;
|
||||||
|
CC2500_WriteReg(CC2500_0C_FSCTRL0, option);
|
||||||
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
|
|
||||||
|
// calibrate hop channels
|
||||||
|
for (uint8_t c = 0; c < REDPINE_NUM_HOPS; c++)
|
||||||
|
{
|
||||||
|
CC2500_Strobe(CC2500_SIDLE);
|
||||||
|
CC2500_WriteReg(CC2500_0A_CHANNR, hopping_frequency[c]);
|
||||||
|
CC2500_Strobe(CC2500_SCAL);
|
||||||
|
delayMicroseconds(900);
|
||||||
|
calData[c] = CC2500_ReadReg(CC2500_25_FSCAL1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint16_t initREDPINE()
|
||||||
|
{
|
||||||
|
hopping_frequency_no = 0;
|
||||||
|
// Used from kn_nrf24l01.c : kn_calculate_freqency_hopping_channels
|
||||||
|
uint32_t idx = 0;
|
||||||
|
uint32_t rnd = MProtocol_id;
|
||||||
|
#define REDPINE_MAX_RF_CHANNEL 255
|
||||||
|
hopping_frequency[idx++] = 1;
|
||||||
|
while (idx < REDPINE_NUM_HOPS-1)
|
||||||
|
{
|
||||||
|
uint32_t i;
|
||||||
|
rnd = rnd * 0x0019660D + 0x3C6EF35F; // Randomization
|
||||||
|
// Drop least-significant byte for better randomization. Start from 1
|
||||||
|
uint8_t next_ch = (rnd >> 8) % REDPINE_MAX_RF_CHANNEL + 1;
|
||||||
|
// Check that it's not duplicate nor adjacent nor channel 0 or 1
|
||||||
|
for (i = 0; i < idx; i++)
|
||||||
|
{
|
||||||
|
uint8_t ch = hopping_frequency[i];
|
||||||
|
if ((ch <= next_ch + 1) && (ch >= next_ch - 1) && (ch > 1))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i != idx)
|
||||||
|
continue;
|
||||||
|
hopping_frequency[idx++] = next_ch;
|
||||||
|
}
|
||||||
|
hopping_frequency[49] = 0; // Last channel is the bind channel at hop 0
|
||||||
|
|
||||||
|
bind_counter=REDPINE_BIND;
|
||||||
|
REDPINE_init(sub_protocol);
|
||||||
|
CC2500_SetTxRxMode(TX_EN); // enable PA
|
||||||
|
return 10000;
|
||||||
|
}
|
||||||
|
#endif
|
@ -87,6 +87,11 @@
|
|||||||
#error "The CORONA forced frequency tuning value is outside of the range -127..127."
|
#error "The CORONA forced frequency tuning value is outside of the range -127..127."
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef FORCE_REDPINE_TUNING
|
||||||
|
#if ( FORCE_REDPINE_TUNING < -127 ) || ( FORCE_REDPINE_TUNING > 127 )
|
||||||
|
#error "The REDPINE forced frequency tuning value is outside of the range -127..127."
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
#ifdef FORCE_HITEC_TUNING
|
#ifdef FORCE_HITEC_TUNING
|
||||||
#if ( FORCE_HITEC_TUNING < -127 ) || ( FORCE_HITEC_TUNING > 127 )
|
#if ( FORCE_HITEC_TUNING < -127 ) || ( FORCE_HITEC_TUNING > 127 )
|
||||||
#error "The HITEC forced frequency tuning value is outside of the range -127..127."
|
#error "The HITEC forced frequency tuning value is outside of the range -127..127."
|
||||||
@ -154,6 +159,7 @@
|
|||||||
#undef FRSKYX_CC2500_INO
|
#undef FRSKYX_CC2500_INO
|
||||||
#undef SFHSS_CC2500_INO
|
#undef SFHSS_CC2500_INO
|
||||||
#undef CORONA_CC2500_INO
|
#undef CORONA_CC2500_INO
|
||||||
|
#undef REDPINE_CC2500_INO
|
||||||
#undef HITEC_CC2500_INO
|
#undef HITEC_CC2500_INO
|
||||||
#undef XN297L_CC2500_EMU
|
#undef XN297L_CC2500_EMU
|
||||||
#endif
|
#endif
|
||||||
|
@ -87,8 +87,8 @@
|
|||||||
//#define ORANGE_TX_BLUE
|
//#define ORANGE_TX_BLUE
|
||||||
|
|
||||||
/** CC2500 Fine Frequency Tuning **/
|
/** CC2500 Fine Frequency Tuning **/
|
||||||
//For optimal performance the CC2500 RF module used by the FrSkyD, FrSkyV, FrSkyX, SFHSS, CORONA and Hitec protocols needs to be tuned for each protocol.
|
//For optimal performance the CC2500 RF module used by the FrSkyD, FrSkyV, FrSkyX, SFHSS, CORONA, Redpine and Hitec protocols needs to be tuned for each protocol.
|
||||||
//Initial tuning should be done via the radio menu with a genuine FrSky/Futaba/CORONA/Hitec receiver.
|
//Initial tuning should be done via the radio menu with a genuine FrSky/Futaba/CORONA/Hitec/Redpine receiver.
|
||||||
//Once a good tuning value is found it can be set here and will override the radio's 'option' setting for all existing and new models which use that protocol.
|
//Once a good tuning value is found it can be set here and will override the radio's 'option' setting for all existing and new models which use that protocol.
|
||||||
//For more information: https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/tree/master/docs/Frequency_Tuning.md
|
//For more information: https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/tree/master/docs/Frequency_Tuning.md
|
||||||
//Uncomment the lines below (remove the "//") and set an appropriate value (replace the "0") to enable. Valid range is -127 to +127.
|
//Uncomment the lines below (remove the "//") and set an appropriate value (replace the "0") to enable. Valid range is -127 to +127.
|
||||||
@ -98,6 +98,7 @@
|
|||||||
//#define FORCE_SFHSS_TUNING 0
|
//#define FORCE_SFHSS_TUNING 0
|
||||||
//#define FORCE_CORONA_TUNING 0
|
//#define FORCE_CORONA_TUNING 0
|
||||||
//#define FORCE_HITEC_TUNING 0
|
//#define FORCE_HITEC_TUNING 0
|
||||||
|
//#define FORCE_REDPINE_TUNING 0
|
||||||
|
|
||||||
/** A7105 Fine Frequency Tuning **/
|
/** A7105 Fine Frequency Tuning **/
|
||||||
//This is required in rare cases where some A7105 modules and/or RXs have an inaccurate crystal oscillator.
|
//This is required in rare cases where some A7105 modules and/or RXs have an inaccurate crystal oscillator.
|
||||||
@ -164,6 +165,7 @@
|
|||||||
#define J6PRO_CYRF6936_INO
|
#define J6PRO_CYRF6936_INO
|
||||||
#define WFLY_CYRF6936_INO
|
#define WFLY_CYRF6936_INO
|
||||||
#define WK2x01_CYRF6936_INO
|
#define WK2x01_CYRF6936_INO
|
||||||
|
|
||||||
//#define TRAXXAS_CYRF6936_INO
|
//#define TRAXXAS_CYRF6936_INO
|
||||||
|
|
||||||
//The protocols below need a CC2500 to be installed
|
//The protocols below need a CC2500 to be installed
|
||||||
@ -173,6 +175,7 @@
|
|||||||
#define FRSKYX_CC2500_INO
|
#define FRSKYX_CC2500_INO
|
||||||
#define HITEC_CC2500_INO
|
#define HITEC_CC2500_INO
|
||||||
#define SFHSS_CC2500_INO
|
#define SFHSS_CC2500_INO
|
||||||
|
#define REDPINE_CC2500_INO
|
||||||
|
|
||||||
//The protocols below need a NRF24L01 to be installed
|
//The protocols below need a NRF24L01 to be installed
|
||||||
#define ASSAN_NRF24L01_INO
|
#define ASSAN_NRF24L01_INO
|
||||||
@ -598,6 +601,9 @@ const PPM_Parameters PPM_prot[14*NBR_BANKS]= {
|
|||||||
CX35
|
CX35
|
||||||
CX10D
|
CX10D
|
||||||
CX10WD
|
CX10WD
|
||||||
|
PROTO_REDPINE
|
||||||
|
RED_FAST
|
||||||
|
RED_SLOW
|
||||||
PROTO_SFHSS
|
PROTO_SFHSS
|
||||||
NONE
|
NONE
|
||||||
PROTO_SHENQI
|
PROTO_SHENQI
|
||||||
|
Loading…
x
Reference in New Issue
Block a user