mirror of https://github.com/g4klx/MMDVM.git
Set up the FM mode pins, partially.
This commit is contained in:
parent
c55002534e
commit
61ccd79c5f
6
Config.h
6
Config.h
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2015,2016,2017,2018 by Jonathan Naylor G4KLX
|
* Copyright (C) 2015,2016,2017,2018,2020 by Jonathan Naylor G4KLX
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -84,5 +84,7 @@
|
||||||
// Use the D-Star and DMR LEDs for POCSAG
|
// Use the D-Star and DMR LEDs for POCSAG
|
||||||
// #define USE_ALTERNATE_POCSAG_LEDS
|
// #define USE_ALTERNATE_POCSAG_LEDS
|
||||||
|
|
||||||
#endif
|
// Use the D-Star and YSF LEDs for FM
|
||||||
|
// #define USE_ALTERNATE_FM_LEDS
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
10
IO.cpp
10
IO.cpp
|
@ -169,23 +169,33 @@ void CIO::selfTest()
|
||||||
delayInt(250);
|
delayInt(250);
|
||||||
setP25Int(true);
|
setP25Int(true);
|
||||||
|
|
||||||
|
#if !defined(USE_ALTERNATE_NXDN_LEDS)
|
||||||
delayInt(250);
|
delayInt(250);
|
||||||
setNXDNInt(true);
|
setNXDNInt(true);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(USE_ALTERNATE_POCSAG_LEDS)
|
||||||
delayInt(250);
|
delayInt(250);
|
||||||
setPOCSAGInt(true);
|
setPOCSAGInt(true);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(USE_ALTERNATE_FM_LEDS)
|
||||||
delayInt(250);
|
delayInt(250);
|
||||||
setFMInt(true);
|
setFMInt(true);
|
||||||
|
|
||||||
delayInt(250);
|
delayInt(250);
|
||||||
setFMInt(false);
|
setFMInt(false);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(USE_ALTERNATE_POCSAG_LEDS)
|
||||||
delayInt(250);
|
delayInt(250);
|
||||||
setPOCSAGInt(false);
|
setPOCSAGInt(false);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(USE_ALTERNATE_NXDN_LEDS)
|
||||||
delayInt(250);
|
delayInt(250);
|
||||||
setNXDNInt(false);
|
setNXDNInt(false);
|
||||||
|
#endif
|
||||||
|
|
||||||
delayInt(250);
|
delayInt(250);
|
||||||
setP25Int(false);
|
setP25Int(false);
|
||||||
|
|
1
IO.h
1
IO.h
|
@ -120,6 +120,7 @@ private:
|
||||||
void setP25Int(bool on);
|
void setP25Int(bool on);
|
||||||
void setNXDNInt(bool on);
|
void setNXDNInt(bool on);
|
||||||
void setPOCSAGInt(bool on);
|
void setPOCSAGInt(bool on);
|
||||||
|
void setFMInt(bool on);
|
||||||
|
|
||||||
void delayInt(unsigned int dly);
|
void delayInt(unsigned int dly);
|
||||||
};
|
};
|
||||||
|
|
19
IODue.cpp
19
IODue.cpp
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2015,2016,2017,2018 by Jonathan Naylor G4KLX
|
* Copyright (C) 2015,2016,2017,2018,2020 by Jonathan Naylor G4KLX
|
||||||
* Copyright (C) 2015 by Jim Mclaughlin KI6ZUM
|
* Copyright (C) 2015 by Jim Mclaughlin KI6ZUM
|
||||||
* Copyright (C) 2016 by Colin Durbridge G4EML
|
* Copyright (C) 2016 by Colin Durbridge G4EML
|
||||||
*
|
*
|
||||||
|
@ -35,6 +35,7 @@
|
||||||
#define PIN_P25 19
|
#define PIN_P25 19
|
||||||
#define PIN_NXDN 20
|
#define PIN_NXDN 20
|
||||||
#define PIN_POCSAG 4
|
#define PIN_POCSAG 4
|
||||||
|
#define PIN_FM 5
|
||||||
#define ADC_CHER_Chan (1<<7) // ADC on Due pin A0 - Due AD7 - (1 << 7)
|
#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_ISR_EOC_Chan ADC_ISR_EOC7
|
||||||
#define ADC_CDR_Chan 7
|
#define ADC_CDR_Chan 7
|
||||||
|
@ -50,6 +51,7 @@
|
||||||
#define PIN_P25 6
|
#define PIN_P25 6
|
||||||
#define PIN_NXDN 5
|
#define PIN_NXDN 5
|
||||||
#define PIN_POCSAG 4
|
#define PIN_POCSAG 4
|
||||||
|
#define PIN_FM 3
|
||||||
#define ADC_CHER_Chan (1<<13) // ADC on Due pin A11 - Due AD13 - (1 << 13)
|
#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_ISR_EOC_Chan ADC_ISR_EOC13
|
||||||
#define ADC_CDR_Chan 13
|
#define ADC_CDR_Chan 13
|
||||||
|
@ -67,6 +69,7 @@
|
||||||
#define PIN_P25 6
|
#define PIN_P25 6
|
||||||
#define PIN_NXDN 5
|
#define PIN_NXDN 5
|
||||||
#define PIN_POCSAG 4
|
#define PIN_POCSAG 4
|
||||||
|
#define PIN_FM 3
|
||||||
#define ADC_CHER_Chan (1<<7) // ADC on Due pin A0 - Due AD7 - (1 << 7)
|
#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_ISR_EOC_Chan ADC_ISR_EOC7
|
||||||
#define ADC_CDR_Chan 7
|
#define ADC_CDR_Chan 7
|
||||||
|
@ -107,6 +110,9 @@ void CIO::initInt()
|
||||||
#if !defined(USE_ALTERNATE_POCSAG_LEDS)
|
#if !defined(USE_ALTERNATE_POCSAG_LEDS)
|
||||||
pinMode(PIN_POCSAG, OUTPUT);
|
pinMode(PIN_POCSAG, OUTPUT);
|
||||||
#endif
|
#endif
|
||||||
|
#if !defined(USE_ALTERNATE_POCSAG_LEDS)
|
||||||
|
pinMode(PIN_FM, OUTPUT);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,10 +264,19 @@ void CIO::setPOCSAGInt(bool on)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CIO::setFMInt(bool on)
|
||||||
|
{
|
||||||
|
#if defined(USE_ALTERNATE_FM_LEDS)
|
||||||
|
digitalWrite(PIN_DSTAR, on ? HIGH : LOW);
|
||||||
|
digitalWrite(PIN_YSF, on ? HIGH : LOW);
|
||||||
|
#else
|
||||||
|
digitalWrite(PIN_FM, on ? HIGH : LOW);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void CIO::delayInt(unsigned int dly)
|
void CIO::delayInt(unsigned int dly)
|
||||||
{
|
{
|
||||||
delay(dly);
|
delay(dly);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
23
IOSTM.cpp
23
IOSTM.cpp
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2016 by Jim McLaughlin KI6ZUM
|
* Copyright (C) 2016 by Jim McLaughlin KI6ZUM
|
||||||
* Copyright (C) 2016,2017,2018 by Andy Uribe CA6JAU
|
* Copyright (C) 2016,2017,2018 by Andy Uribe CA6JAU
|
||||||
* Copyright (C) 2017,2018 by Jonathan Naylor G4KLX
|
* Copyright (C) 2017,2018,2020 by Jonathan Naylor G4KLX
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -42,8 +42,8 @@ POCSAG PB12 output CN10 Pin16
|
||||||
|
|
||||||
MDSTAR PC4 output CN10 Pin34
|
MDSTAR PC4 output CN10 Pin34
|
||||||
MDMR PC5 output CN10 Pin6
|
MDMR PC5 output CN10 Pin6
|
||||||
MYSF PC2 output CN7 Pin35
|
MYSF PC2 output CN7 Pin35
|
||||||
MP25 PC3 output CN7 Pin37
|
MP25 PC3 output CN7 Pin37
|
||||||
MNXDN PC6 output CN10 Pin4
|
MNXDN PC6 output CN10 Pin4
|
||||||
MPOCSAG PC8 output CN10 Pin2
|
MPOCSAG PC8 output CN10 Pin2
|
||||||
|
|
||||||
|
@ -1438,6 +1438,23 @@ void CIO::setPOCSAGInt(bool on)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CIO::setFMInt(bool on)
|
||||||
|
{
|
||||||
|
#if defined(USE_ALTERNATE_FM_LEDS)
|
||||||
|
GPIO_WriteBit(PORT_DSTAR, PIN_DSTAR, on ? Bit_SET : Bit_RESET);
|
||||||
|
GPIO_WriteBit(PORT_YSF, PIN_YSF, on ? Bit_SET : Bit_RESET);
|
||||||
|
#if defined(MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && (defined(STM32F4_NUCLEO) || defined(STM32F722_RPT_HAT))
|
||||||
|
GPIO_WriteBit(PORT_MDSTAR, PIN_MDSTAR, on ? Bit_SET : Bit_RESET);
|
||||||
|
GPIO_WriteBit(PORT_MYSF, PIN_MYSF, on ? Bit_SET : Bit_RESET);
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
GPIO_WriteBit(PORT_FM, PIN_FM, on ? Bit_SET : Bit_RESET);
|
||||||
|
#if defined(MODE_PINS) && defined(STM32F4_NUCLEO_MORPHO_HEADER) && (defined(STM32F4_NUCLEO) || defined(STM32F722_RPT_HAT))
|
||||||
|
GPIO_WriteBit(PORT_MFM, PIN_MFM, on ? Bit_SET : Bit_RESET);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// Simple delay function for STM32
|
// Simple delay function for STM32
|
||||||
// Example from: http://thehackerworkshop.com/?p=1209
|
// Example from: http://thehackerworkshop.com/?p=1209
|
||||||
void CIO::delayInt(unsigned int dly)
|
void CIO::delayInt(unsigned int dly)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2016 by Jim McLaughlin KI6ZUM
|
* Copyright (C) 2016 by Jim McLaughlin KI6ZUM
|
||||||
* Copyright (C) 2016, 2017 by Andy Uribe CA6JAU
|
* Copyright (C) 2016, 2017 by Andy Uribe CA6JAU
|
||||||
* Copyright (C) 2017,2018 by Jonathan Naylor G4KLX
|
* Copyright (C) 2017,2018,2020 by Jonathan Naylor G4KLX
|
||||||
* Copyright (C) 2017 by Wojciech Krutnik N0CALL
|
* Copyright (C) 2017 by Wojciech Krutnik N0CALL
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -41,6 +41,7 @@ YSF PB8 output
|
||||||
P25 PB9 output
|
P25 PB9 output
|
||||||
NXDN PB10 output
|
NXDN PB10 output
|
||||||
POCSAG PB11 output
|
POCSAG PB11 output
|
||||||
|
FM PB12 output
|
||||||
|
|
||||||
RX PB0 analog input (ADC1_8)
|
RX PB0 analog input (ADC1_8)
|
||||||
RSSI PB1 analog input (ADC2_9)
|
RSSI PB1 analog input (ADC2_9)
|
||||||
|
@ -84,6 +85,9 @@ USART1_RXD PA10 input (AF)
|
||||||
#define PIN_POCSAG 11
|
#define PIN_POCSAG 11
|
||||||
#define PORT_POCSAG GPIOB
|
#define PORT_POCSAG GPIOB
|
||||||
#define BB_POCSAG *((bitband_t)BITBAND_PERIPH(&PORT_POCSAG->ODR, PIN_POCSAG))
|
#define BB_POCSAG *((bitband_t)BITBAND_PERIPH(&PORT_POCSAG->ODR, PIN_POCSAG))
|
||||||
|
#define PIN_FM 12
|
||||||
|
#define PORT_FM GPIOB
|
||||||
|
#define BB_FM *((bitband_t)BITBAND_PERIPH(&PORT_FM->ODR, PIN_FM))
|
||||||
|
|
||||||
#define PIN_RX 0
|
#define PIN_RX 0
|
||||||
#define PIN_RX_ADC_CH 8
|
#define PIN_RX_ADC_CH 8
|
||||||
|
@ -154,9 +158,9 @@ void GPIOConfigPin(GPIO_TypeDef *port_ptr, uint32_t pin, uint32_t mode_cnf_value
|
||||||
#if defined(STM32F1_POG)
|
#if defined(STM32F1_POG)
|
||||||
void FancyLEDEffect()
|
void FancyLEDEffect()
|
||||||
{
|
{
|
||||||
bitband_t foo[] = {&BB_LED, &BB_COSLED, &BB_PTT, &BB_DMR, &BB_DSTAR, &BB_YSF, &BB_P25};
|
bitband_t foo[] = {&BB_LED, &BB_COSLED, &BB_PTT, &BB_DMR, &BB_DSTAR, &BB_YSF, &BB_P25, &BB_NXDN, &BB_POCSAG, &BB_FM};
|
||||||
|
|
||||||
for(int i=0; i<7; i++){
|
for(int i=0; i<10; i++){
|
||||||
*foo[i] = 0x01;
|
*foo[i] = 0x01;
|
||||||
}
|
}
|
||||||
GPIOConfigPin(PORT_USART1_TXD, PIN_USART1_TXD, GPIO_CRL_MODE0_1);
|
GPIOConfigPin(PORT_USART1_TXD, PIN_USART1_TXD, GPIO_CRL_MODE0_1);
|
||||||
|
@ -172,12 +176,12 @@ void FancyLEDEffect()
|
||||||
*((bitband_t)BITBAND_PERIPH(&PORT_USART1_TXD->ODR, PIN_USART1_TXD)) = 0x01;
|
*((bitband_t)BITBAND_PERIPH(&PORT_USART1_TXD->ODR, PIN_USART1_TXD)) = 0x01;
|
||||||
|
|
||||||
*foo[0] = 0x01;
|
*foo[0] = 0x01;
|
||||||
for(int i=1; i<7; i++){
|
for(int i=1; i<10; i++){
|
||||||
delay(SystemCoreClock/1000*10);
|
delay(SystemCoreClock/1000*10);
|
||||||
*foo[i-1] = 0x00;
|
*foo[i-1] = 0x00;
|
||||||
*foo[i] = 0x01;
|
*foo[i] = 0x01;
|
||||||
}
|
}
|
||||||
for(int i=5; i>=0; i--){
|
for(int i=10; i>=0; i--){
|
||||||
delay(SystemCoreClock/1000*10);
|
delay(SystemCoreClock/1000*10);
|
||||||
*foo[i+1] = 0x00;
|
*foo[i+1] = 0x00;
|
||||||
*foo[i] = 0x01;
|
*foo[i] = 0x01;
|
||||||
|
@ -228,6 +232,9 @@ static inline void GPIOInit()
|
||||||
#if !defined(USE_ALTERNATE_POCSAG_LEDS)
|
#if !defined(USE_ALTERNATE_POCSAG_LEDS)
|
||||||
GPIOConfigPin(PORT_POCSAG, PIN_POCSAG, GPIO_CRL_MODE0_1);
|
GPIOConfigPin(PORT_POCSAG, PIN_POCSAG, GPIO_CRL_MODE0_1);
|
||||||
#endif
|
#endif
|
||||||
|
#if !defined(USE_ALTERNATE_FM_LEDS)
|
||||||
|
GPIOConfigPin(PORT_FM, PIN_FM, GPIO_CRL_MODE0_1);
|
||||||
|
#endif
|
||||||
|
|
||||||
GPIOConfigPin(PORT_RX, PIN_RX, 0);
|
GPIOConfigPin(PORT_RX, PIN_RX, 0);
|
||||||
#if defined(SEND_RSSI_DATA)
|
#if defined(SEND_RSSI_DATA)
|
||||||
|
@ -460,6 +467,16 @@ void CIO::setPOCSAGInt(bool on)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CIO::setFMInt(bool on)
|
||||||
|
{
|
||||||
|
#if defined(USE_ALTERNATE_FM_LEDS)
|
||||||
|
BB_DSTAR = !!on;
|
||||||
|
BB_YSF = !!on;
|
||||||
|
#else
|
||||||
|
BB_FM = !!on;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void CIO::delayInt(unsigned int dly)
|
void CIO::delayInt(unsigned int dly)
|
||||||
{
|
{
|
||||||
delay(dly);
|
delay(dly);
|
||||||
|
|
17
IOTeensy.cpp
17
IOTeensy.cpp
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2016,2017,2018 by Jonathan Naylor G4KLX
|
* Copyright (C) 2016,2017,2018,2020 by Jonathan Naylor G4KLX
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -37,9 +37,11 @@
|
||||||
#if defined(__MK20DX256__)
|
#if defined(__MK20DX256__)
|
||||||
#define PIN_NXDN 2
|
#define PIN_NXDN 2
|
||||||
#define PIN_POCSAG 3
|
#define PIN_POCSAG 3
|
||||||
|
#define PIN_FM 4
|
||||||
#else
|
#else
|
||||||
#define PIN_NXDN 24
|
#define PIN_NXDN 24
|
||||||
#define PIN_POCSAG 25
|
#define PIN_POCSAG 25
|
||||||
|
#define PIN_FM 26
|
||||||
#endif
|
#endif
|
||||||
#define PIN_ADC 5 // A0, Pin 14
|
#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
|
#define PIN_RSSI 4 // Teensy 3.5/3.6, A16, Pin 35. Teensy 3.1/3.2, A17, Pin 28
|
||||||
|
@ -76,6 +78,9 @@ void CIO::initInt()
|
||||||
#if !defined(USE_ALTERNATE_POCSAG_LEDS)
|
#if !defined(USE_ALTERNATE_POCSAG_LEDS)
|
||||||
pinMode(PIN_POCSAG, OUTPUT);
|
pinMode(PIN_POCSAG, OUTPUT);
|
||||||
#endif
|
#endif
|
||||||
|
#if !defined(USE_ALTERNATE_FM_LEDS)
|
||||||
|
pinMode(PIN_FM, OUTPUT);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -243,6 +248,16 @@ void CIO::setPOCSAGInt(bool on)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CIO::setFMInt(bool on)
|
||||||
|
{
|
||||||
|
#if defined(USE_ALTERNATE_FM_LEDS)
|
||||||
|
digitalWrite(PIN_DSTAR, on ? HIGH : LOW);
|
||||||
|
digitalWrite(PIN_YSF, on ? HIGH : LOW);
|
||||||
|
#else
|
||||||
|
digitalWrite(PIN_FM, on ? HIGH : LOW);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void CIO::delayInt(unsigned int dly)
|
void CIO::delayInt(unsigned int dly)
|
||||||
{
|
{
|
||||||
delay(dly);
|
delay(dly);
|
||||||
|
|
Loading…
Reference in New Issue