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
|
||||
// #define USE_COS_AS_LOCKOUT
|
||||
|
||||
// Use pins to output the current mode
|
||||
// #define ARDUINO_MODE_PINS
|
||||
|
||||
// For the original Arduino Due pin layout
|
||||
// #define ARDUINO_DUE_PAPA
|
||||
|
||||
|
|
45
IO.cpp
45
IO.cpp
|
@ -51,6 +51,9 @@ const uint16_t DC_OFFSET = 2048U;
|
|||
#define PIN_COS 52
|
||||
#define PIN_PTT 23
|
||||
#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_ISR_EOC_Chan ADC_ISR_EOC13
|
||||
#define ADC_CDR_Chan 13
|
||||
|
@ -137,6 +140,13 @@ m_lockout(false)
|
|||
pinMode(PIN_COSLED, OUTPUT);
|
||||
pinMode(PIN_LED, OUTPUT);
|
||||
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
|
||||
}
|
||||
|
||||
|
@ -204,7 +214,7 @@ void CIO::start()
|
|||
|
||||
digitalWrite(PIN_PTT, m_pttInvert ? HIGH : LOW);
|
||||
digitalWrite(PIN_COSLED, LOW);
|
||||
digitalWrite(PIN_LED, HIGH);
|
||||
digitalWrite(PIN_LED, HIGH);
|
||||
#elif defined(__MBED__)
|
||||
m_ticker.attach(&ADC_Handler, 1.0 / 24000.0);
|
||||
|
||||
|
@ -215,6 +225,8 @@ void CIO::start()
|
|||
|
||||
m_count = 0U;
|
||||
m_started = true;
|
||||
|
||||
setMode();
|
||||
}
|
||||
|
||||
void CIO::process()
|
||||
|
@ -227,6 +239,7 @@ void CIO::process()
|
|||
if (m_modemState == STATE_DMR && m_tx)
|
||||
dmrTX.setStart(false);
|
||||
m_modemState = STATE_IDLE;
|
||||
setMode();
|
||||
}
|
||||
|
||||
m_watchdog = 0U;
|
||||
|
@ -433,6 +446,36 @@ void CIO::setDecode(bool 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)
|
||||
{
|
||||
m_pttInvert = pttInvert;
|
||||
|
|
3
IO.h
3
IO.h
|
@ -36,7 +36,8 @@ public:
|
|||
uint16_t getSpace() const;
|
||||
|
||||
void setDecode(bool dcd);
|
||||
|
||||
void setMode();
|
||||
|
||||
void interrupt();
|
||||
|
||||
void setParameters(bool rxInvert, bool txInvert, bool pttInvert, uint8_t rxLevel, uint8_t txLevel);
|
||||
|
|
|
@ -315,6 +315,8 @@ void CSerialPort::setMode(MMDVM_STATE modemState)
|
|||
}
|
||||
|
||||
m_modemState = modemState;
|
||||
|
||||
io.setMode();
|
||||
}
|
||||
|
||||
void CSerialPort::start()
|
||||
|
|
Loading…
Reference in New Issue