From 9eb6bc1a6049b5005e2715f88bb4c8df4d6c1720 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Tue, 19 Jun 2018 18:17:05 +0100 Subject: [PATCH] Add the POCSAG mode pin for the Arduino Due, Teensy 3.2/3.6 and the STM32F105. --- IODue.cpp | 5 +++++ IOSTM_CMSIS.cpp | 22 ++++++++++++++-------- IOTeensy.cpp | 4 ++++ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/IODue.cpp b/IODue.cpp index 8b5fff1..d568e1d 100644 --- a/IODue.cpp +++ b/IODue.cpp @@ -34,6 +34,7 @@ #define PIN_YSF 18 #define PIN_P25 19 #define PIN_NXDN 20 +#define PIN_POCSAG 4 #define ADC_CHER_Chan (1<<7) // ADC on Due pin A0 - Due AD7 - (1 << 7) #define ADC_ISR_EOC_Chan ADC_ISR_EOC7 #define ADC_CDR_Chan 7 @@ -48,6 +49,7 @@ #define PIN_YSF 7 #define PIN_P25 6 #define PIN_NXDN 5 +#define PIN_POCSAG 4 #define ADC_CHER_Chan (1<<13) // ADC on Due pin A11 - Due AD13 - (1 << 13) #define ADC_ISR_EOC_Chan ADC_ISR_EOC13 #define ADC_CDR_Chan 13 @@ -64,6 +66,7 @@ #define PIN_YSF 7 #define PIN_P25 6 #define PIN_NXDN 5 +#define PIN_POCSAG 4 #define ADC_CHER_Chan (1<<7) // ADC on Due pin A0 - Due AD7 - (1 << 7) #define ADC_ISR_EOC_Chan ADC_ISR_EOC7 #define ADC_CDR_Chan 7 @@ -99,6 +102,7 @@ void CIO::initInt() pinMode(PIN_YSF, OUTPUT); pinMode(PIN_P25, OUTPUT); pinMode(PIN_NXDN, OUTPUT); + pinMode(PIN_POCSAG, OUTPUT); #endif } @@ -237,6 +241,7 @@ void CIO::setNXDNInt(bool on) void CIO::setPOCSAGInt(bool on) { + digitalWrite(PIN_POCSAG, on ? HIGH : LOW); } void CIO::delayInt(unsigned int dly) diff --git a/IOSTM_CMSIS.cpp b/IOSTM_CMSIS.cpp index 7bded9c..43e9d89 100644 --- a/IOSTM_CMSIS.cpp +++ b/IOSTM_CMSIS.cpp @@ -40,6 +40,7 @@ DMR PB6 output YSF PB8 output P25 PB9 output NXDN PB10 output +POCSAG PB11 output RX PB0 analog input (ADC1_8) RSSI PB1 analog input (ADC2_9) @@ -80,6 +81,9 @@ USART1_RXD PA10 input (AF) #define PIN_NXDN 10 #define PORT_NXDN GPIOB #define BB_NXDN *((bitband_t)BITBAND_PERIPH(&PORT_NXDN->ODR, PIN_NXDN)) +#define PIN_POCSAG 11 +#define PORT_POCSAG GPIOB +#define BB_POCSAG *((bitband_t)BITBAND_PERIPH(&PORT_POCSAG->ODR, PIN_POCSAG)) #define PIN_RX 0 #define PIN_RX_ADC_CH 8 @@ -209,16 +213,17 @@ static inline void GPIOInit() GPIOD->ODR = 0; // configure ports - GPIOConfigPin(PORT_PTT, PIN_PTT, GPIO_CRL_MODE0_1); + GPIOConfigPin(PORT_PTT, PIN_PTT, GPIO_CRL_MODE0_1); GPIOConfigPin(PORT_COSLED, PIN_COSLED, GPIO_CRL_MODE0_1); - GPIOConfigPin(PORT_LED, PIN_LED, GPIO_CRL_MODE0_1); - GPIOConfigPin(PORT_COS, PIN_COS, GPIO_CRL_CNF0_1); + GPIOConfigPin(PORT_LED, PIN_LED, GPIO_CRL_MODE0_1); + GPIOConfigPin(PORT_COS, PIN_COS, GPIO_CRL_CNF0_1); - GPIOConfigPin(PORT_DSTAR, PIN_DSTAR, GPIO_CRL_MODE0_1); - GPIOConfigPin(PORT_DMR, PIN_DMR, GPIO_CRL_MODE0_1); - GPIOConfigPin(PORT_YSF, PIN_YSF, GPIO_CRL_MODE0_1); - GPIOConfigPin(PORT_P25, PIN_P25, GPIO_CRL_MODE0_1); - GPIOConfigPin(PORT_NXDN, PIN_NXDN, GPIO_CRL_MODE0_1); + GPIOConfigPin(PORT_DSTAR, PIN_DSTAR, GPIO_CRL_MODE0_1); + GPIOConfigPin(PORT_DMR, PIN_DMR, GPIO_CRL_MODE0_1); + GPIOConfigPin(PORT_YSF, PIN_YSF, GPIO_CRL_MODE0_1); + GPIOConfigPin(PORT_P25, PIN_P25, GPIO_CRL_MODE0_1); + GPIOConfigPin(PORT_NXDN, PIN_NXDN, GPIO_CRL_MODE0_1); + GPIOConfigPin(PORT_POCSAG, PIN_POCSAG, GPIO_CRL_MODE0_1); GPIOConfigPin(PORT_RX, PIN_RX, 0); #if defined(SEND_RSSI_DATA) @@ -436,6 +441,7 @@ void CIO::setNXDNInt(bool on) void CIO::setPOCSAGInt(bool on) { + BB_POCSAG = !!on; } void CIO::delayInt(unsigned int dly) diff --git a/IOTeensy.cpp b/IOTeensy.cpp index 3b74c99..cf07856 100644 --- a/IOTeensy.cpp +++ b/IOTeensy.cpp @@ -36,8 +36,10 @@ #define PIN_P25 12 #if defined(__MK20DX256__) #define PIN_NXDN 2 +#define PIN_POCSAG 3 #else #define PIN_NXDN 24 +#define PIN_POCSAG 25 #endif #define PIN_ADC 5 // A0, Pin 14 #define PIN_RSSI 4 // Teensy 3.5/3.6, A16, Pin 35. Teensy 3.1/3.2, A17, Pin 28 @@ -69,6 +71,7 @@ void CIO::initInt() pinMode(PIN_YSF, OUTPUT); pinMode(PIN_P25, OUTPUT); pinMode(PIN_NXDN, OUTPUT); + pinMode(PIN_POCSAG, OUTPUT); #endif } @@ -223,6 +226,7 @@ void CIO::setNXDNInt(bool on) void CIO::setPOCSAGInt(bool on) { + digitalWrite(PIN_POCSAG, on ? HIGH : LOW); } void CIO::delayInt(unsigned int dly)