mirror of https://github.com/g4klx/MMDVM.git
Assert optional output pins on mode change.
This commit is contained in:
parent
2e0d0c027c
commit
e9ba2e896a
3
Config.h
3
Config.h
|
@ -31,6 +31,9 @@
|
||||||
// Allow the use of the COS line to lockout the modem
|
// Allow the use of the COS line to lockout the modem
|
||||||
// #define USE_COS_AS_LOCKOUT
|
// #define USE_COS_AS_LOCKOUT
|
||||||
|
|
||||||
|
// Use pins to output the current mode
|
||||||
|
// #define ARDUINO_MODE_PINS
|
||||||
|
|
||||||
// For the original Arduino Due pin layout
|
// For the original Arduino Due pin layout
|
||||||
// #define ARDUINO_DUE_PAPA
|
// #define ARDUINO_DUE_PAPA
|
||||||
|
|
||||||
|
|
43
IO.cpp
43
IO.cpp
|
@ -51,6 +51,9 @@ const uint16_t DC_OFFSET = 2048U;
|
||||||
#define PIN_COS 52
|
#define PIN_COS 52
|
||||||
#define PIN_PTT 23
|
#define PIN_PTT 23
|
||||||
#define PIN_COSLED 22
|
#define PIN_COSLED 22
|
||||||
|
#define PIN_DSTAR 132
|
||||||
|
#define PIN_DMR 133
|
||||||
|
#define PIN_YSF 134
|
||||||
#define ADC_CHER_Chan (1<<13) // ADC on Due pin A11 - Due AD13 - (1 << 13) (PB20)
|
#define ADC_CHER_Chan (1<<13) // ADC on Due pin A11 - Due AD13 - (1 << 13) (PB20)
|
||||||
#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
|
||||||
|
@ -137,6 +140,13 @@ m_lockout(false)
|
||||||
pinMode(PIN_COSLED, OUTPUT);
|
pinMode(PIN_COSLED, OUTPUT);
|
||||||
pinMode(PIN_LED, OUTPUT);
|
pinMode(PIN_LED, OUTPUT);
|
||||||
pinMode(PIN_COS, INPUT);
|
pinMode(PIN_COS, INPUT);
|
||||||
|
|
||||||
|
#if defined(ARDUINO_MODE_PINS)
|
||||||
|
// Set up the mode output pins
|
||||||
|
pinMode(PIN_DSTAR, OUTPUT);
|
||||||
|
pinMode(PIN_DMR, OUTPUT);
|
||||||
|
pinMode(PIN_YSF, OUTPUT);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,6 +225,8 @@ void CIO::start()
|
||||||
|
|
||||||
m_count = 0U;
|
m_count = 0U;
|
||||||
m_started = true;
|
m_started = true;
|
||||||
|
|
||||||
|
setMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CIO::process()
|
void CIO::process()
|
||||||
|
@ -227,6 +239,7 @@ void CIO::process()
|
||||||
if (m_modemState == STATE_DMR && m_tx)
|
if (m_modemState == STATE_DMR && m_tx)
|
||||||
dmrTX.setStart(false);
|
dmrTX.setStart(false);
|
||||||
m_modemState = STATE_IDLE;
|
m_modemState = STATE_IDLE;
|
||||||
|
setMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
m_watchdog = 0U;
|
m_watchdog = 0U;
|
||||||
|
@ -433,6 +446,36 @@ void CIO::setDecode(bool dcd)
|
||||||
m_dcd = dcd;
|
m_dcd = dcd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CIO::setMode()
|
||||||
|
{
|
||||||
|
#if !defined(__MBED__)
|
||||||
|
#if defined(ARDUINO_MODE_PINS)
|
||||||
|
switch (m_modemState) {
|
||||||
|
case STATE_DSTAR:
|
||||||
|
digitalWrite(PIN_DSTAR, HIGH);
|
||||||
|
digitalWrite(PIN_DMR, LOW);
|
||||||
|
digitalWrite(PIN_YSF, LOW);
|
||||||
|
break;
|
||||||
|
case STATE_DMR:
|
||||||
|
digitalWrite(PIN_DSTAR, LOW);
|
||||||
|
digitalWrite(PIN_DMR, HIGH);
|
||||||
|
digitalWrite(PIN_YSF, LOW);
|
||||||
|
break;
|
||||||
|
case STATE_YSF:
|
||||||
|
digitalWrite(PIN_DSTAR, LOW);
|
||||||
|
digitalWrite(PIN_DMR, LOW);
|
||||||
|
digitalWrite(PIN_YSF, HIGH);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
digitalWrite(PIN_DSTAR, LOW);
|
||||||
|
digitalWrite(PIN_DMR, LOW);
|
||||||
|
digitalWrite(PIN_YSF, LOW);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void CIO::setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rxLevel, uint8_t txLevel)
|
void CIO::setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rxLevel, uint8_t txLevel)
|
||||||
{
|
{
|
||||||
m_pttInvert = pttInvert;
|
m_pttInvert = pttInvert;
|
||||||
|
|
1
IO.h
1
IO.h
|
@ -36,6 +36,7 @@ public:
|
||||||
uint16_t getSpace() const;
|
uint16_t getSpace() const;
|
||||||
|
|
||||||
void setDecode(bool dcd);
|
void setDecode(bool dcd);
|
||||||
|
void setMode();
|
||||||
|
|
||||||
void interrupt();
|
void interrupt();
|
||||||
|
|
||||||
|
|
|
@ -315,6 +315,8 @@ void CSerialPort::setMode(MMDVM_STATE modemState)
|
||||||
}
|
}
|
||||||
|
|
||||||
m_modemState = modemState;
|
m_modemState = modemState;
|
||||||
|
|
||||||
|
io.setMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSerialPort::start()
|
void CSerialPort::start()
|
||||||
|
|
Loading…
Reference in New Issue