mirror of
https://github.com/pascallanger/DIY-Multiprotocol-TX-Module.git
synced 2025-12-28 15:33:15 +00:00
Merge pull request #15 from bikemike/configurable_pins
made pins configurable and added support for nano
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
|
||||
// Check selected board type
|
||||
#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"
|
||||
#endif
|
||||
#if F_CPU != 16000000L || not defined(__AVR_ATmega328P__)
|
||||
@@ -180,22 +180,68 @@ struct PPM_Parameters
|
||||
//*******************
|
||||
//*** 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_port PORTB
|
||||
#define LED_ddr DDRB
|
||||
#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_port PORTD
|
||||
#ifdef XMEGA
|
||||
#define SDI_pin 6 //SDIO-D6
|
||||
#define SDI_port PORTD
|
||||
#define SDI_ipr PIND
|
||||
#define SDI_ddr DDRD
|
||||
#else
|
||||
#define SDI_pin 5 //D5 = PD5
|
||||
#define SDI_port PORTD
|
||||
#define SDI_ipr PIND
|
||||
#define SDI_ddr DDRD
|
||||
#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_port PORTD
|
||||
#define A7105_CS_ddr DDRD
|
||||
#define SDO_pin 6 //D6 = PD6
|
||||
#define SDO_port PORTD
|
||||
#define SDO_ipr PIND
|
||||
#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_port PORTB
|
||||
#define NRF_CSN_ddr DDRB
|
||||
#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_port PORTC
|
||||
#define CTRL1_ddr DDRC
|
||||
#define CTRL2_pin 2 //A2 = PC2
|
||||
#define CTRL2_port PORTC
|
||||
#define CTRL2_ddr DDRC
|
||||
//
|
||||
#ifdef XMEGA
|
||||
#define CTRL1_on
|
||||
@@ -203,53 +249,53 @@ struct PPM_Parameters
|
||||
#define CTRL2_on
|
||||
#define CTRL2_off
|
||||
#else
|
||||
#define CTRL1_on PORTC |= _BV(1)
|
||||
#define CTRL1_off PORTC &= ~_BV(1)
|
||||
#define CTRL2_on PORTC |= _BV(2)
|
||||
#define CTRL2_off PORTC &= ~_BV(2)
|
||||
#define CTRL1_on CTRL1_port |= _BV(CTRL1_pin)
|
||||
#define CTRL1_off CTRL1_port &= ~_BV(CTRL1_pin)
|
||||
#define CTRL2_on CTRL2_port |= _BV(CTRL2_pin)
|
||||
#define CTRL2_off CTRL2_port &= ~_BV(CTRL2_pin)
|
||||
#endif
|
||||
//
|
||||
#ifdef XMEGA
|
||||
#define A7105_CS_on PORTD.OUTSET = _BV(4) //D4
|
||||
#define A7105_CS_off PORTD.OUTCLR = _BV(4) //D4
|
||||
#define A7105_CS_on A7105_CS_port.OUTSET = _BV(A7105_CS_pin) //D4
|
||||
#define A7105_CS_off A7105_CS_port.OUTCLR = _BV(A7105_CS_pin) //D4
|
||||
#else
|
||||
#define A7105_CS_on PORTD |= _BV(2) //D2
|
||||
#define A7105_CS_off PORTD &= ~_BV(2) //D2
|
||||
#define A7105_CS_on A7105_CS_port |= _BV(A7105_CS_pin) //D2
|
||||
#define A7105_CS_off A7105_CS_port &= ~_BV(A7105_CS_pin) //D2
|
||||
#endif
|
||||
//
|
||||
#ifdef XMEGA
|
||||
#define SCK_on PORTD.OUTSET = _BV(7) //D7
|
||||
#define SCK_off PORTD.OUTCLR = _BV(7) //D7
|
||||
#define SCK_on SCLK_port.OUTSET = _BV(SCLK_pin) //D7
|
||||
#define SCK_off SCLK_port.OUTCLR = _BV(SCLK_pin) //D7
|
||||
#else
|
||||
#define SCK_on PORTD |= _BV(4) //D4
|
||||
#define SCK_off PORTD &= ~_BV(4) //D4
|
||||
#define SCK_on SCLK_port |= _BV(SCLK_pin) //D4
|
||||
#define SCK_off SCLK_port &= ~_BV(SCLK_pin) //D4
|
||||
#endif
|
||||
//
|
||||
#ifdef XMEGA
|
||||
#define SDI_on PORTD.OUTSET = _BV(5) //D5
|
||||
#define SDI_off PORTD.OUTCLR = _BV(5) //D5
|
||||
#define SDI_on SDI_port.OUTSET = _BV(SDI_pin) //D5
|
||||
#define SDI_off SDI_port.OUTCLR = _BV(SDI_pin) //D5
|
||||
#else
|
||||
#define SDI_on PORTD |= _BV(5) //D5
|
||||
#define SDI_off PORTD &= ~_BV(5) //D5
|
||||
#define SDI_on SDI_port |= _BV(SDI_pin) //D5
|
||||
#define SDI_off SDI_port &= ~_BV(SDI_pin) //D5
|
||||
#endif
|
||||
//
|
||||
#ifdef XMEGA
|
||||
#define SDI_1 (PORTD.IN & _BV(SDI_pin)) == _BV(SDI_pin) //D5
|
||||
#define SDI_0 (PORTD.IN & _BV(SDI_pin)) == 0x00 //D5
|
||||
#define SDI_1 (SDI_port.IN & _BV(SDI_pin)) == _BV(SDI_pin) //D5
|
||||
#define SDI_0 (SDI_port.IN & _BV(SDI_pin)) == 0x00 //D5
|
||||
#else
|
||||
#define SDI_1 (PIND & _BV(SDI_pin)) == _BV(SDI_pin) //D5
|
||||
#define SDI_0 (PIND & _BV(SDI_pin)) == 0x00 //D5
|
||||
#define SDI_1 (SDI_ipr & _BV(SDI_pin)) == _BV(SDI_pin) //D5
|
||||
#define SDI_0 (SDI_ipr & _BV(SDI_pin)) == 0x00 //D5
|
||||
#endif
|
||||
//
|
||||
#define SDI_SET_INPUT DDRD &= ~_BV(5) //D5
|
||||
#define SDI_SET_OUTPUT DDRD |= _BV(5) //D5
|
||||
#define SDI_SET_INPUT SDI_ddr &= ~_BV(SDI_pin) //D5
|
||||
#define SDI_SET_OUTPUT SDI_ddr |= _BV(SDI_pin) //D5
|
||||
//
|
||||
#ifdef XMEGA
|
||||
#define CC25_CSN_on PORTD.OUTSET = _BV(7) //D7
|
||||
#define CC25_CSN_off PORTD.OUTCLR = _BV(7) //D7
|
||||
#define CC25_CSN_on CC25_CSN_port.OUTSET = _BV(CC25_CSN_pin) //D7
|
||||
#define CC25_CSN_off CC25_CSN_port.OUTCLR = _BV(CC25_CSN_pin) //D7
|
||||
#else
|
||||
#define CC25_CSN_on PORTD |= _BV(7) //D7
|
||||
#define CC25_CSN_off PORTD &= ~_BV(7) //D7
|
||||
#define CC25_CSN_on CC25_CSN_port |= _BV(CC25_CSN_pin) //D7
|
||||
#define CC25_CSN_off CC25_CSN_port &= ~_BV(CC25_CSN_pin) //D7
|
||||
#endif
|
||||
//
|
||||
#ifdef XMEGA
|
||||
@@ -258,64 +304,64 @@ struct PPM_Parameters
|
||||
#define NRF_CE_on
|
||||
#define NRF_CE_off
|
||||
#else
|
||||
#define NRF_CSN_on PORTB |= _BV(0) //D8
|
||||
#define NRF_CSN_off PORTB &= ~_BV(0) //D8
|
||||
#define NRF_CSN_on NRF_CSN_port |= _BV(NRF_CSN_pin) //D8
|
||||
#define NRF_CSN_off NRF_CSN_port &= ~_BV(NRF_CSN_pin) //D8
|
||||
#define NRF_CE_on
|
||||
#define NRF_CE_off
|
||||
#endif
|
||||
//
|
||||
#ifdef XMEGA
|
||||
#define CYRF_CSN_on PORTD.OUTSET = _BV(4)
|
||||
#define CYRF_CSN_off PORTD.OUTCLR = _BV(4)
|
||||
#define CYRF_CSN_on CYRF_CSN_port.OUTSET = _BV(CYRF_CSN_pin)
|
||||
#define CYRF_CSN_off CYRF_CSN_port.OUTCLR = _BV(CYRF_CSN_pin)
|
||||
#else
|
||||
#define CYRF_CSN_on PORTB |= _BV(1) //D9
|
||||
#define CYRF_CSN_off PORTB &= ~_BV(1) //D9
|
||||
#define CYRF_RST_HI PORTC |= _BV(5) //A5
|
||||
#define CYRF_RST_LO PORTC &= ~_BV(5) //A5
|
||||
#define CYRF_CSN_on CYRF_CSN_port |= _BV(CYRF_CSN_pin) //D9
|
||||
#define CYRF_CSN_off CYRF_CSN_port &= ~_BV(CYRF_CSN_pin) //D9
|
||||
#define CYRF_RST_HI CYRF_RST_port |= _BV(CYRF_RST_pin) //A5
|
||||
#define CYRF_RST_LO CYRF_RST_port &= ~_BV(CYRF_RST_pin) //A5
|
||||
#define CYRF_RST_pin 5
|
||||
#endif
|
||||
//
|
||||
#ifdef XMEGA
|
||||
#define SDO_1 (PORTD.IN & _BV(SDO_pin)) == _BV(SDO_pin) //D6
|
||||
#define SDO_0 (PORTD.IN & _BV(SDO_pin)) == 0x00 //D6
|
||||
#define SDO_1 (SDO_port.IN & _BV(SDO_pin)) == _BV(SDO_pin) //D6
|
||||
#define SDO_0 (SDO_port.IN & _BV(SDO_pin)) == 0x00 //D6
|
||||
#else
|
||||
#define SDO_1 (PIND & _BV(SDO_pin)) == _BV(SDO_pin) //D6
|
||||
#define SDO_0 (PIND & _BV(SDO_pin)) == 0x00 //D6
|
||||
#define SDO_1 (SDO_ipr & _BV(SDO_pin)) == _BV(SDO_pin) //D6
|
||||
#define SDO_0 (SDO_ipr & _BV(SDO_pin)) == 0x00 //D6
|
||||
#endif
|
||||
//
|
||||
//
|
||||
|
||||
// LED
|
||||
#ifdef XMEGA
|
||||
#define LED_ON PORTD.OUTCLR = _BV(1)
|
||||
#define LED_OFF PORTD.OUTSET = _BV(1)
|
||||
#define LED_TOGGLE PORTD.OUTTGL = _BV(1)
|
||||
#define LED_SET_OUTPUT PORTD.DIRSET = _BV(1)
|
||||
#define IS_LED_on ( (PORTD.OUT & _BV(1)) != 0x00 )
|
||||
#define LED_ON LED_port.OUTCLR = _BV(LED_pin)
|
||||
#define LED_OFF LED_port.OUTSET = _BV(LED_pin)
|
||||
#define LED_TOGGLE LED_port.OUTTGL = _BV(LED_pin)
|
||||
#define LED_SET_OUTPUT LED_port.DIRSET = _BV(LED_pin)
|
||||
#define IS_LED_on ( (LED_port.OUT & _BV(LED_pin)) != 0x00 )
|
||||
#else
|
||||
#define LED_ON PORTB |= _BV(5)
|
||||
#define LED_OFF PORTB &= ~_BV(5)
|
||||
#define LED_TOGGLE PORTB ^= _BV(5)
|
||||
#define LED_SET_OUTPUT DDRB |= _BV(5)
|
||||
#define IS_LED_on ( (PORTB & _BV(5)) != 0x00 )
|
||||
#define LED_ON LED_port |= _BV(LED_pin)
|
||||
#define LED_OFF LED_port &= ~_BV(LED_pin)
|
||||
#define LED_TOGGLE LED_port ^= _BV(LED_pin)
|
||||
#define LED_SET_OUTPUT LED_ddr |= _BV(LED_pin)
|
||||
#define IS_LED_on ( (LED_port & _BV(LED_pin)) != 0x00 )
|
||||
#endif
|
||||
|
||||
//BIND
|
||||
#ifdef XMEGA
|
||||
#define IS_BIND_BUTTON_on ( (PORTD.IN & _BV(2)) == 0x00 )
|
||||
#else
|
||||
#define BIND_SET_INPUT DDRB &= ~_BV(5)
|
||||
#define BIND_SET_PULLUP PORTB |= _BV(5)
|
||||
#define IS_BIND_BUTTON_on ( (PINB & _BV(5)) == 0x00 )
|
||||
#define BIND_SET_OUTPUT DDRB |= _BV(5)
|
||||
#define BIND_SET_INPUT BIND_ddr &= ~_BV(BIND_pin)
|
||||
#define BIND_SET_PULLUP BIND_port |= _BV(BIND_pin)
|
||||
#define IS_BIND_BUTTON_on ( (BIND_ipr & _BV(BIND_pin)) == 0x00 )
|
||||
#define BIND_SET_OUTPUT BIND_ddr |= _BV(BIND_pin)
|
||||
#endif
|
||||
|
||||
// TX
|
||||
#ifdef DEBUG_TX
|
||||
#define TX_ON PORTD |= _BV(1)
|
||||
#define TX_OFF PORTD &= ~_BV(1)
|
||||
#define TX_TOGGLE PORTD ^= _BV(1)
|
||||
#define TX_SET_OUTPUT DDRD |= _BV(1)
|
||||
#define TX_ON DEBUG_TX_port |= _BV(DEBUG_TX_pin)
|
||||
#define TX_OFF DEBUG_TX_port &= ~_BV(DEBUG_TX_pin)
|
||||
#define TX_TOGGLE DEBUG_TX_port ^= _BV(DEBUG_TX_pin)
|
||||
#define TX_SET_OUTPUT DEBUG_TX_ddr |= _BV(DEBUG_TX_pin)
|
||||
#else
|
||||
#define TX_ON
|
||||
#define TX_OFF
|
||||
|
||||
Reference in New Issue
Block a user