Merge pull request #15 from bikemike/configurable_pins

made pins configurable and added support for nano
This commit is contained in:
pascallanger 2016-09-19 21:12:08 +02:00 committed by GitHub
commit 174e6ad637
4 changed files with 173 additions and 76 deletions

View File

@ -15,7 +15,7 @@
// Check selected board type // Check selected board type
#ifndef XMEGA #ifndef XMEGA
#if not defined(ARDUINO_AVR_PRO) && not defined(ARDUINO_AVR_MINI) #if not defined(ARDUINO_AVR_PRO) && not defined(ARDUINO_AVR_MINI) && not defined(ARDUINO_AVR_NANO)
#error You must select the board type "Arduino Pro or Pro Mini" or "Arduino Mini" #error You must select the board type "Arduino Pro or Pro Mini" or "Arduino Mini"
#endif #endif
#if F_CPU != 16000000L || not defined(__AVR_ATmega328P__) #if F_CPU != 16000000L || not defined(__AVR_ATmega328P__)
@ -180,22 +180,68 @@ struct PPM_Parameters
//******************* //*******************
//*** Pinouts *** //*** Pinouts ***
//******************* //*******************
#define TELEMETRY_SERIAL_TX_pin 2
#define TELEMETRY_SERIAL_TX_port PORTD
#define TELEMETRY_SERIAL_TX_ddr DDRD
#define DEBUG_TX_pin 1
#define DEBUG_TX_port PORTD
#define DEBUG_TX_ddr DDRD
#define MODE_DIAL1_PIN 2
#define MODE_DIAL1_PORT PORTB
#define MODE_DIAL2_PIN 3
#define MODE_DIAL2_PORT PORTB
#define MODE_DIAL3_PIN 4
#define MODE_DIAL3_PORT PORTB
#define MODE_DIAL4_PIN 0
#define MODE_DIAL4_PORT PORTC
#define LED_pin 5 //D13 = PB5 #define LED_pin 5 //D13 = PB5
#define LED_port PORTB
#define LED_ddr DDRB
#define BIND_pin 5 //D13 = PB5 #define BIND_pin 5 //D13 = PB5
#define BIND_port PORTB
#define BIND_ipr PINB
#define BIND_ddr DDRB
#define PPM_pin 3 //D3 = PD3 #define PPM_pin 3 //D3 = PD3
#define PPM_port PORTD
#ifdef XMEGA #ifdef XMEGA
#define SDI_pin 6 //SDIO-D6 #define SDI_pin 6 //SDIO-D6
#define SDI_port PORTD
#define SDI_ipr PIND
#define SDI_ddr DDRD
#else #else
#define SDI_pin 5 //D5 = PD5 #define SDI_pin 5 //D5 = PD5
#define SDI_port PORTD
#define SDI_ipr PIND
#define SDI_ddr DDRD
#endif #endif
#define SCLK_pin 4 //D4 = PD4 #define SCLK_pin 4 //D4 = PD4
#define SCLK_port PORTD
#define SCLK_ddr DDRD
#define A7105_CS_pin 2 //D2 = PD2 #define A7105_CS_pin 2 //D2 = PD2
#define A7105_CS_port PORTD
#define A7105_CS_ddr DDRD
#define SDO_pin 6 //D6 = PD6 #define SDO_pin 6 //D6 = PD6
#define SDO_port PORTD
#define SDO_ipr PIND
#define CC25_CSN_pin 7 //D7 = PD7 #define CC25_CSN_pin 7 //D7 = PD7
#define CC25_CSN_port PORTD
#define CC25_CSN_ddr DDRD
#define NRF_CSN_pin 0 //D8 = PB0 #define NRF_CSN_pin 0 //D8 = PB0
#define NRF_CSN_port PORTB
#define NRF_CSN_ddr DDRB
#define CYRF_CSN_pin 1 //D9 = PB1 #define CYRF_CSN_pin 1 //D9 = PB1
#define CYRF_CSN_port PORTB
#define CYRF_CSN_ddr DDRB
#define CYRF_RST_pin 5 //D9 = PB1
#define CYRF_RST_port PORTC
#define CYRF_RST_ddr DDRC
#define CTRL1_pin 1 //A1 = PC1 #define CTRL1_pin 1 //A1 = PC1
#define CTRL1_port PORTC
#define CTRL1_ddr DDRC
#define CTRL2_pin 2 //A2 = PC2 #define CTRL2_pin 2 //A2 = PC2
#define CTRL2_port PORTC
#define CTRL2_ddr DDRC
// //
#ifdef XMEGA #ifdef XMEGA
#define CTRL1_on #define CTRL1_on
@ -203,53 +249,53 @@ struct PPM_Parameters
#define CTRL2_on #define CTRL2_on
#define CTRL2_off #define CTRL2_off
#else #else
#define CTRL1_on PORTC |= _BV(1) #define CTRL1_on CTRL1_port |= _BV(CTRL1_pin)
#define CTRL1_off PORTC &= ~_BV(1) #define CTRL1_off CTRL1_port &= ~_BV(CTRL1_pin)
#define CTRL2_on PORTC |= _BV(2) #define CTRL2_on CTRL2_port |= _BV(CTRL2_pin)
#define CTRL2_off PORTC &= ~_BV(2) #define CTRL2_off CTRL2_port &= ~_BV(CTRL2_pin)
#endif #endif
// //
#ifdef XMEGA #ifdef XMEGA
#define A7105_CS_on PORTD.OUTSET = _BV(4) //D4 #define A7105_CS_on A7105_CS_port.OUTSET = _BV(A7105_CS_pin) //D4
#define A7105_CS_off PORTD.OUTCLR = _BV(4) //D4 #define A7105_CS_off A7105_CS_port.OUTCLR = _BV(A7105_CS_pin) //D4
#else #else
#define A7105_CS_on PORTD |= _BV(2) //D2 #define A7105_CS_on A7105_CS_port |= _BV(A7105_CS_pin) //D2
#define A7105_CS_off PORTD &= ~_BV(2) //D2 #define A7105_CS_off A7105_CS_port &= ~_BV(A7105_CS_pin) //D2
#endif #endif
// //
#ifdef XMEGA #ifdef XMEGA
#define SCK_on PORTD.OUTSET = _BV(7) //D7 #define SCK_on SCLK_port.OUTSET = _BV(SCLK_pin) //D7
#define SCK_off PORTD.OUTCLR = _BV(7) //D7 #define SCK_off SCLK_port.OUTCLR = _BV(SCLK_pin) //D7
#else #else
#define SCK_on PORTD |= _BV(4) //D4 #define SCK_on SCLK_port |= _BV(SCLK_pin) //D4
#define SCK_off PORTD &= ~_BV(4) //D4 #define SCK_off SCLK_port &= ~_BV(SCLK_pin) //D4
#endif #endif
// //
#ifdef XMEGA #ifdef XMEGA
#define SDI_on PORTD.OUTSET = _BV(5) //D5 #define SDI_on SDI_port.OUTSET = _BV(SDI_pin) //D5
#define SDI_off PORTD.OUTCLR = _BV(5) //D5 #define SDI_off SDI_port.OUTCLR = _BV(SDI_pin) //D5
#else #else
#define SDI_on PORTD |= _BV(5) //D5 #define SDI_on SDI_port |= _BV(SDI_pin) //D5
#define SDI_off PORTD &= ~_BV(5) //D5 #define SDI_off SDI_port &= ~_BV(SDI_pin) //D5
#endif #endif
// //
#ifdef XMEGA #ifdef XMEGA
#define SDI_1 (PORTD.IN & _BV(SDI_pin)) == _BV(SDI_pin) //D5 #define SDI_1 (SDI_port.IN & _BV(SDI_pin)) == _BV(SDI_pin) //D5
#define SDI_0 (PORTD.IN & _BV(SDI_pin)) == 0x00 //D5 #define SDI_0 (SDI_port.IN & _BV(SDI_pin)) == 0x00 //D5
#else #else
#define SDI_1 (PIND & _BV(SDI_pin)) == _BV(SDI_pin) //D5 #define SDI_1 (SDI_ipr & _BV(SDI_pin)) == _BV(SDI_pin) //D5
#define SDI_0 (PIND & _BV(SDI_pin)) == 0x00 //D5 #define SDI_0 (SDI_ipr & _BV(SDI_pin)) == 0x00 //D5
#endif #endif
// //
#define SDI_SET_INPUT DDRD &= ~_BV(5) //D5 #define SDI_SET_INPUT SDI_ddr &= ~_BV(SDI_pin) //D5
#define SDI_SET_OUTPUT DDRD |= _BV(5) //D5 #define SDI_SET_OUTPUT SDI_ddr |= _BV(SDI_pin) //D5
// //
#ifdef XMEGA #ifdef XMEGA
#define CC25_CSN_on PORTD.OUTSET = _BV(7) //D7 #define CC25_CSN_on CC25_CSN_port.OUTSET = _BV(CC25_CSN_pin) //D7
#define CC25_CSN_off PORTD.OUTCLR = _BV(7) //D7 #define CC25_CSN_off CC25_CSN_port.OUTCLR = _BV(CC25_CSN_pin) //D7
#else #else
#define CC25_CSN_on PORTD |= _BV(7) //D7 #define CC25_CSN_on CC25_CSN_port |= _BV(CC25_CSN_pin) //D7
#define CC25_CSN_off PORTD &= ~_BV(7) //D7 #define CC25_CSN_off CC25_CSN_port &= ~_BV(CC25_CSN_pin) //D7
#endif #endif
// //
#ifdef XMEGA #ifdef XMEGA
@ -258,64 +304,64 @@ struct PPM_Parameters
#define NRF_CE_on #define NRF_CE_on
#define NRF_CE_off #define NRF_CE_off
#else #else
#define NRF_CSN_on PORTB |= _BV(0) //D8 #define NRF_CSN_on NRF_CSN_port |= _BV(NRF_CSN_pin) //D8
#define NRF_CSN_off PORTB &= ~_BV(0) //D8 #define NRF_CSN_off NRF_CSN_port &= ~_BV(NRF_CSN_pin) //D8
#define NRF_CE_on #define NRF_CE_on
#define NRF_CE_off #define NRF_CE_off
#endif #endif
// //
#ifdef XMEGA #ifdef XMEGA
#define CYRF_CSN_on PORTD.OUTSET = _BV(4) #define CYRF_CSN_on CYRF_CSN_port.OUTSET = _BV(CYRF_CSN_pin)
#define CYRF_CSN_off PORTD.OUTCLR = _BV(4) #define CYRF_CSN_off CYRF_CSN_port.OUTCLR = _BV(CYRF_CSN_pin)
#else #else
#define CYRF_CSN_on PORTB |= _BV(1) //D9 #define CYRF_CSN_on CYRF_CSN_port |= _BV(CYRF_CSN_pin) //D9
#define CYRF_CSN_off PORTB &= ~_BV(1) //D9 #define CYRF_CSN_off CYRF_CSN_port &= ~_BV(CYRF_CSN_pin) //D9
#define CYRF_RST_HI PORTC |= _BV(5) //A5 #define CYRF_RST_HI CYRF_RST_port |= _BV(CYRF_RST_pin) //A5
#define CYRF_RST_LO PORTC &= ~_BV(5) //A5 #define CYRF_RST_LO CYRF_RST_port &= ~_BV(CYRF_RST_pin) //A5
#define CYRF_RST_pin 5 #define CYRF_RST_pin 5
#endif #endif
// //
#ifdef XMEGA #ifdef XMEGA
#define SDO_1 (PORTD.IN & _BV(SDO_pin)) == _BV(SDO_pin) //D6 #define SDO_1 (SDO_port.IN & _BV(SDO_pin)) == _BV(SDO_pin) //D6
#define SDO_0 (PORTD.IN & _BV(SDO_pin)) == 0x00 //D6 #define SDO_0 (SDO_port.IN & _BV(SDO_pin)) == 0x00 //D6
#else #else
#define SDO_1 (PIND & _BV(SDO_pin)) == _BV(SDO_pin) //D6 #define SDO_1 (SDO_ipr & _BV(SDO_pin)) == _BV(SDO_pin) //D6
#define SDO_0 (PIND & _BV(SDO_pin)) == 0x00 //D6 #define SDO_0 (SDO_ipr & _BV(SDO_pin)) == 0x00 //D6
#endif #endif
// //
// //
// LED // LED
#ifdef XMEGA #ifdef XMEGA
#define LED_ON PORTD.OUTCLR = _BV(1) #define LED_ON LED_port.OUTCLR = _BV(LED_pin)
#define LED_OFF PORTD.OUTSET = _BV(1) #define LED_OFF LED_port.OUTSET = _BV(LED_pin)
#define LED_TOGGLE PORTD.OUTTGL = _BV(1) #define LED_TOGGLE LED_port.OUTTGL = _BV(LED_pin)
#define LED_SET_OUTPUT PORTD.DIRSET = _BV(1) #define LED_SET_OUTPUT LED_port.DIRSET = _BV(LED_pin)
#define IS_LED_on ( (PORTD.OUT & _BV(1)) != 0x00 ) #define IS_LED_on ( (LED_port.OUT & _BV(LED_pin)) != 0x00 )
#else #else
#define LED_ON PORTB |= _BV(5) #define LED_ON LED_port |= _BV(LED_pin)
#define LED_OFF PORTB &= ~_BV(5) #define LED_OFF LED_port &= ~_BV(LED_pin)
#define LED_TOGGLE PORTB ^= _BV(5) #define LED_TOGGLE LED_port ^= _BV(LED_pin)
#define LED_SET_OUTPUT DDRB |= _BV(5) #define LED_SET_OUTPUT LED_ddr |= _BV(LED_pin)
#define IS_LED_on ( (PORTB & _BV(5)) != 0x00 ) #define IS_LED_on ( (LED_port & _BV(LED_pin)) != 0x00 )
#endif #endif
//BIND //BIND
#ifdef XMEGA #ifdef XMEGA
#define IS_BIND_BUTTON_on ( (PORTD.IN & _BV(2)) == 0x00 ) #define IS_BIND_BUTTON_on ( (PORTD.IN & _BV(2)) == 0x00 )
#else #else
#define BIND_SET_INPUT DDRB &= ~_BV(5) #define BIND_SET_INPUT BIND_ddr &= ~_BV(BIND_pin)
#define BIND_SET_PULLUP PORTB |= _BV(5) #define BIND_SET_PULLUP BIND_port |= _BV(BIND_pin)
#define IS_BIND_BUTTON_on ( (PINB & _BV(5)) == 0x00 ) #define IS_BIND_BUTTON_on ( (BIND_ipr & _BV(BIND_pin)) == 0x00 )
#define BIND_SET_OUTPUT DDRB |= _BV(5) #define BIND_SET_OUTPUT BIND_ddr |= _BV(BIND_pin)
#endif #endif
// TX // TX
#ifdef DEBUG_TX #ifdef DEBUG_TX
#define TX_ON PORTD |= _BV(1) #define TX_ON DEBUG_TX_port |= _BV(DEBUG_TX_pin)
#define TX_OFF PORTD &= ~_BV(1) #define TX_OFF DEBUG_TX_port &= ~_BV(DEBUG_TX_pin)
#define TX_TOGGLE PORTD ^= _BV(1) #define TX_TOGGLE DEBUG_TX_port ^= _BV(DEBUG_TX_pin)
#define TX_SET_OUTPUT DDRD |= _BV(1) #define TX_SET_OUTPUT DEBUG_TX_ddr |= _BV(DEBUG_TX_pin)
#else #else
#define TX_ON #define TX_ON
#define TX_OFF #define TX_OFF

View File

@ -172,11 +172,34 @@ void setup()
TCC1.CTRLA = 0x0B ; // Event3 (prescale of 16) TCC1.CTRLA = 0x0B ; // Event3 (prescale of 16)
#else #else
// General pinout // General pinout
DDRD = _BV(A7105_CS_pin)|_BV(SDI_pin)|_BV(SCLK_pin)|_BV( CC25_CSN_pin);//pin output
DDRC = _BV(CTRL1_pin)|_BV(CTRL2_pin)|_BV(CYRF_RST_pin); //pin output // outputs
DDRB = _BV(NRF_CSN_pin)|_BV(CYRF_CSN_pin); //pin output #ifdef A7105_INSTALLED
PORTB = _BV(2)|_BV(3)|_BV(4)|_BV(BIND_pin); //pullup on dial (D10=PB2,D11=PB3,D12=PB4) and bind button A7105_CS_ddr |= _BV(A7105_CS_pin);
PORTC = _BV(0); //pullup on dial (A0=PC0) #endif
SDI_SET_OUTPUT;
SCLK_ddr |= _BV(SCLK_pin);
#ifdef CC2500_INSTALLED
CC25_CSN_ddr |= _BV(CC25_CSN_pin);
#endif
CTRL1_ddr |= _BV(CTRL1_pin);
CTRL2_ddr |= _BV(CTRL2_pin);
#ifdef CYRF6936_INSTALLED
CYRF_RST_ddr |= _BV(CYRF_RST_pin);
CYRF_CSN_ddr |= _BV(CYRF_CSN_pin);
#endif
#ifdef NRF24L01_INSTALLED
NRF_CSN_ddr |= _BV(NRF_CSN_pin);
#endif
//pullup on dial (D10=PB2,D11=PB3,D12=PB4) and bind button
MODE_DIAL1_PORT |= _BV(MODE_DIAL1_PIN);
MODE_DIAL2_PORT |= _BV(MODE_DIAL2_PIN);
MODE_DIAL3_PORT |= _BV(MODE_DIAL3_PIN);
MODE_DIAL4_PORT |= _BV(MODE_DIAL4_PIN);
BIND_port |= _BV(BIND_pin);
#ifdef DEBUG_TX #ifdef DEBUG_TX
TX_SET_OUTPUT; TX_SET_OUTPUT;
#endif #endif
@ -188,10 +211,18 @@ void setup()
#endif #endif
// Set Chip selects // Set Chip selects
#ifdef A7105_INSTALLED
A7105_CS_on; A7105_CS_on;
#endif
#ifdef CC2500_INSTALLED
CC25_CSN_on; CC25_CSN_on;
#endif
#ifdef NRF24L01_INSTALLED
NRF_CSN_on; NRF_CSN_on;
#endif
#ifdef CYRF6936_INSTALLED
CYRF_CSN_on; CYRF_CSN_on;
#endif
// Set SPI lines // Set SPI lines
SDI_on; SDI_on;
SCK_off; SCK_off;
@ -216,7 +247,11 @@ void setup()
#ifndef ENABLE_PPM #ifndef ENABLE_PPM
mode_select = MODE_SERIAL ; // force serial mode mode_select = MODE_SERIAL ; // force serial mode
#else #else
mode_select=0x0F - ( ( (PINB>>2)&0x07 ) | ( (PINC<<3)&0x08) );//encoder dip switches 1,2,4,8=>B2,B3,B4,C0 mode_select =
((MODE_DIAL1_PORT & MODE_DIAL1_PIN) ? 1 : 0) +
((MODE_DIAL2_PORT & MODE_DIAL2_PIN) ? 2 : 0) +
((MODE_DIAL3_PORT & MODE_DIAL3_PIN) ? 4 : 0) +
((MODE_DIAL4_PORT & MODE_DIAL4_PIN) ? 8 : 0);
#endif #endif
// Update LED // Update LED
@ -254,8 +289,16 @@ void setup()
protocol_init(); protocol_init();
//Configure PPM interrupt //Configure PPM interrupt
EICRA |=_BV(ISC11); // The rising edge of INT1 pin D3 generates an interrupt request #if PPM_pin == 2
EICRA |= _BV(ISC01); // The rising edge of INT1 pin D3 generates an interrupt request
EIMSK |= _BV(INT0); // INT1 interrupt enable
#elif PPM_pin == 3
EICRA |= _BV(ISC11); // The rising edge of INT1 pin D3 generates an interrupt request
EIMSK |= _BV(INT1); // INT1 interrupt enable EIMSK |= _BV(INT1); // INT1 interrupt enable
#else
#error PPM pin can only be 2 or 3
#endif
#if defined(TELEMETRY) #if defined(TELEMETRY)
PPM_Telemetry_serial_init(); // Configure serial for telemetry PPM_Telemetry_serial_init(); // Configure serial for telemetry
@ -1097,10 +1140,18 @@ void init()
//PPM //PPM
#ifdef ENABLE_PPM #ifdef ENABLE_PPM
#ifdef XMEGA #ifdef XMEGA
#if PPM_pin == 2
ISR(PORTD_INT0_vect) ISR(PORTD_INT0_vect)
#else #else
ISR(PORTD_INT1_vect)
#endif
#else
#if PPM_pin == 2
ISR(INT0_vect, ISR_NOBLOCK)
#else
ISR(INT1_vect, ISR_NOBLOCK) ISR(INT1_vect, ISR_NOBLOCK)
#endif #endif
#endif
{ // Interrupt on PPM pin { // Interrupt on PPM pin
static int8_t chan=-1; static int8_t chan=-1;
static uint16_t Prev_TCNT1=0; static uint16_t Prev_TCNT1=0;

View File

@ -588,11 +588,11 @@ void initTXSerial( uint8_t speed)
{ {
TIMSK0 = 0 ; // Stop all timer 0 interrupts TIMSK0 = 0 ; // Stop all timer 0 interrupts
#ifdef INVERT_SERIAL #ifdef INVERT_SERIAL
PORTD &= ~2 ; TELEMETRY_SERIAL_TX_port &= ~_BV(TELEMETRY_SERIAL_TX_pin);
#else #else
PORTD |= 2 ; TELEMETRY_SERIAL_TX_port |= _BV(TELEMETRY_SERIAL_TX_pin);
#endif #endif
DDRD |= 2 ; // TxD pin is an output TELEMETRY_SERIAL_TX_ddr |= _BV(TELEMETRY_SERIAL_TX_pin) ; // TxD pin is an output
UCSR0B &= ~(1<<TXEN0) ; UCSR0B &= ~(1<<TXEN0) ;
SerialControl.speed = speed ; SerialControl.speed = speed ;
@ -707,11 +707,11 @@ ISR(TIMER0_COMPA_vect)
byte = GPIOR0 ; byte = GPIOR0 ;
if ( byte & 0x01 ) if ( byte & 0x01 )
{ {
PORTD |= 0x02 ; TELEMETRY_SERIAL_TX_port |= _BV(TELEMETRY_SERIAL_TX_pin);
} }
else else
{ {
PORTD &= ~0x02 ; TELEMETRY_SERIAL_TX_port &= ~_BV(TELEMETRY_SERIAL_TX_pin);
} }
byte /= 2 ; // Generates shorter code than byte >>= 1 byte /= 2 ; // Generates shorter code than byte >>= 1
GPIOR0 = byte ; GPIOR0 = byte ;
@ -732,11 +732,11 @@ ISR(TIMER0_COMPB_vect)
byte = GPIOR2 ; byte = GPIOR2 ;
if ( byte & 0x01 ) if ( byte & 0x01 )
{ {
PORTD |= 0x02 ; TELEMETRY_SERIAL_TX_port |= _BV(TELEMETRY_SERIAL_TX_pin);
} }
else else
{ {
PORTD &= ~0x02 ; TELEMETRY_SERIAL_TX_port &= ~_BV(TELEMETRY_SERIAL_TX_pin);
} }
byte /= 2 ; // Generates shorter code than byte >>= 1 byte /= 2 ; // Generates shorter code than byte >>= 1
GPIOR2 = byte ; GPIOR2 = byte ;
@ -787,11 +787,11 @@ ISR(TIMER0_OVF_vect)
} }
if ( byte & 0x01 ) if ( byte & 0x01 )
{ {
PORTD |= 0x02 ; TELEMETRY_SERIAL_TX_port |= _BV(TELEMETRY_SERIAL_TX_pin);
} }
else else
{ {
PORTD &= ~0x02 ; TELEMETRY_SERIAL_TX_port &= ~_BV(TELEMETRY_SERIAL_TX_pin);
} }
byte /= 2 ; // Generates shorter code than byte >>= 1 byte /= 2 ; // Generates shorter code than byte >>= 1
if ( GPIOR1 > 2 ) if ( GPIOR1 > 2 )

View File

@ -36,7 +36,7 @@
#define A7105_INSTALLED #define A7105_INSTALLED
#define CYRF6936_INSTALLED #define CYRF6936_INSTALLED
#define CC2500_INSTALLED #define CC2500_INSTALLED
#define NFR24L01_INSTALLED #define NRF24L01_INSTALLED
//Bellow is the list of all available protocols. Comment the protocols you are not using with "//" to save Flash space. //Bellow is the list of all available protocols. Comment the protocols you are not using with "//" to save Flash space.
#ifdef A7105_INSTALLED #ifdef A7105_INSTALLED
@ -54,7 +54,7 @@
#define FRSKYX_CC2500_INO #define FRSKYX_CC2500_INO
#define SFHSS_CC2500_INO #define SFHSS_CC2500_INO
#endif #endif
#ifdef NFR24L01_INSTALLED #ifdef NRF24L01_INSTALLED
#define BAYANG_NRF24L01_INO #define BAYANG_NRF24L01_INO
#define CG023_NRF24L01_INO #define CG023_NRF24L01_INO
#define CX10_NRF24L01_INO #define CX10_NRF24L01_INO