mirror of https://github.com/markqvist/MMDVM.git
Merge remote-tracking branch 'g4klx/master'
commit
fc200c4cd7
18
IODue.cpp
18
IODue.cpp
|
@ -51,6 +51,8 @@
|
|||
#define ADC_CDR_Chan 13
|
||||
#define DACC_MR_USER_SEL_Chan DACC_MR_USER_SEL_CHANNEL1 // DAC on Due DAC1
|
||||
#define DACC_CHER_Chan DACC_CHER_CH1
|
||||
#define RSSI_CHER_Chan (1<<1) // ADC on Due pin A6 - Due AD1 - (1 << 1)
|
||||
#define RSSI_CDR_Chan 1
|
||||
#elif defined(ARDUINO_DUE_NTH)
|
||||
#define PIN_COS A7
|
||||
#define PIN_PTT A8
|
||||
|
@ -64,6 +66,8 @@
|
|||
#define ADC_CDR_Chan 7
|
||||
#define DACC_MR_USER_SEL_Chan DACC_MR_USER_SEL_CHANNEL0 // DAC on Due DAC0
|
||||
#define DACC_CHER_Chan DACC_CHER_CH0
|
||||
#define RSSI_CHER_Chan (1<<1) // ADC on Due pin A6 - Due AD1 - (1 << 1)
|
||||
#define RSSI_CDR_Chan 1
|
||||
#else
|
||||
#error "Either ARDUINO_DUE_PAPA, ARDUINO_DUE_ZUM_V10, or ARDUINO_DUE_NTH need to be defined"
|
||||
#endif
|
||||
|
@ -104,7 +108,10 @@ void CIO::startInt()
|
|||
ADC->ADC_IDR = 0xFFFFFFFF; // Disable interrupts
|
||||
ADC->ADC_IER = ADC_CHER_Chan; // Enable End-Of-Conv interrupt
|
||||
ADC->ADC_CHDR = 0xFFFF; // Disable all channels
|
||||
ADC->ADC_CHER = ADC_CHER_Chan; // Enable just one channel
|
||||
ADC->ADC_CHER = ADC_CHER_Chan; // Enable rx input channel
|
||||
#if defined(SEND_RSSI_DATA)
|
||||
ADC->ADC_CHER |= RSSI_CHER_Chan; // and RSSI input
|
||||
#endif
|
||||
ADC->ADC_CGR = 0x15555555; // All gains set to x1
|
||||
ADC->ADC_COR = 0x00000000; // All offsets off
|
||||
ADC->ADC_MR = (ADC->ADC_MR & 0xFFFFFFF0) | (1 << 1) | ADC_MR_TRGEN; // 1 = trig source TIO from TC0
|
||||
|
@ -169,7 +176,11 @@ void CIO::interrupt(uint8_t source)
|
|||
sample = ADC->ADC_CDR[ADC_CDR_Chan];
|
||||
m_rxBuffer.put(sample, control);
|
||||
|
||||
#if defined(SEND_RSSI_DATA)
|
||||
m_rssiBuffer.put(ADC->ADC_CDR[RSSI_CDR_Chan]);
|
||||
#else
|
||||
m_rssiBuffer.put(0U);
|
||||
#endif
|
||||
|
||||
m_watchdog++;
|
||||
}
|
||||
|
@ -200,7 +211,7 @@ void CIO::setDStarInt(bool on)
|
|||
digitalWrite(PIN_DSTAR, on ? HIGH : LOW);
|
||||
}
|
||||
|
||||
void CIO::setDMRInt(bool on)
|
||||
void CIO::setDMRInt(bool on)
|
||||
{
|
||||
digitalWrite(PIN_DMR, on ? HIGH : LOW);
|
||||
}
|
||||
|
@ -210,10 +221,9 @@ void CIO::setYSFInt(bool on)
|
|||
digitalWrite(PIN_YSF, on ? HIGH : LOW);
|
||||
}
|
||||
|
||||
void CIO::setP25Int(bool on)
|
||||
void CIO::setP25Int(bool on)
|
||||
{
|
||||
digitalWrite(PIN_P25, on ? HIGH : LOW);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
39
IOTeensy.cpp
39
IOTeensy.cpp
|
@ -77,14 +77,14 @@ void CIO::startInt()
|
|||
{
|
||||
// Initialise the DAC
|
||||
SIM_SCGC2 |= SIM_SCGC2_DAC0;
|
||||
DAC0_C0 = DAC_C0_DACEN | DAC_C0_DACRFS; // 1.2V VDDA is DACREF_2
|
||||
DAC0_C0 = DAC_C0_DACEN | DAC_C0_DACRFS; // 3.3V VDDA is DACREF_2
|
||||
|
||||
// Initialise ADC0
|
||||
SIM_SCGC6 |= SIM_SCGC6_ADC0;
|
||||
ADC0_CFG1 = ADC_CFG1_ADIV(1) | ADC_CFG1_ADICLK(1) | // Single-ended 12 bits, long sample time
|
||||
ADC_CFG1_MODE(1) | ADC_CFG1_ADLSMP;
|
||||
ADC0_CFG2 = ADC_CFG2_MUXSEL | ADC_CFG2_ADLSTS(2); // Select channels ADxxxb
|
||||
ADC0_SC2 = ADC_SC2_REFSEL(1) | ADC_SC2_ADTRG; // Voltage ref internal, hardware trigger
|
||||
ADC0_SC2 = ADC_SC2_REFSEL(0) | ADC_SC2_ADTRG; // Voltage ref external, hardware trigger
|
||||
ADC0_SC3 = ADC_SC3_AVGE | ADC_SC3_AVGS(0); // Enable averaging, 4 samples
|
||||
|
||||
ADC0_SC3 |= ADC_SC3_CAL;
|
||||
|
@ -105,7 +105,7 @@ void CIO::startInt()
|
|||
ADC1_CFG1 = ADC_CFG1_ADIV(1) | ADC_CFG1_ADICLK(1) | // Single-ended 12 bits, long sample time
|
||||
ADC_CFG1_MODE(1) | ADC_CFG1_ADLSMP;
|
||||
ADC1_CFG2 = ADC_CFG2_MUXSEL | ADC_CFG2_ADLSTS(2); // Select channels ADxxxb
|
||||
ADC1_SC2 = ADC_SC2_REFSEL(1); // Voltage ref internal, software trigger
|
||||
ADC1_SC2 = ADC_SC2_REFSEL(0); // Voltage ref external, software trigger
|
||||
ADC1_SC3 = ADC_SC3_AVGE | ADC_SC3_AVGS(0); // Enable averaging, 4 samples
|
||||
|
||||
ADC1_SC3 |= ADC_SC3_CAL;
|
||||
|
@ -117,13 +117,11 @@ void CIO::startInt()
|
|||
sum1 = (sum1 / 2U) | 0x8000U;
|
||||
ADC1_PG = sum1;
|
||||
|
||||
NVIC_ENABLE_IRQ(IRQ_ADC1);
|
||||
#endif
|
||||
|
||||
#if defined(EXTERNAL_OSC)
|
||||
// Set ADC0 to trigger from the LPTMR at 24 kHz
|
||||
SIM_SOPT7 = SIM_SOPT7_ADC0ALTTRGEN | // Enable ADC0 alternate trigger
|
||||
SIM_SOPT7_ADC0PRETRGSEL | // Enable ADC0 pre-trigger
|
||||
SIM_SOPT7_ADC0TRGSEL(14); // Trigger ADC0 by LPTMR0
|
||||
|
||||
CORE_PIN13_CONFIG = PORT_PCR_MUX(3);
|
||||
|
@ -163,25 +161,30 @@ void CIO::interrupt(uint8_t source)
|
|||
if ((ADC0_SC1A & ADC_SC1_COCO) == ADC_SC1_COCO) {
|
||||
sample = ADC0_RA;
|
||||
m_rxBuffer.put(sample, control);
|
||||
|
||||
#if defined(SEND_RSSI_DATA)
|
||||
ADC1_SC1A = ADC_SC1_AIEN | PIN_RSSI;
|
||||
#else
|
||||
m_rssiBuffer.put(0U);
|
||||
#endif
|
||||
}
|
||||
|
||||
m_watchdog++;
|
||||
}
|
||||
|
||||
|
||||
#if defined(SEND_RSSI_DATA)
|
||||
if (source == 1U) { // ADC1
|
||||
|
||||
if ((ADC1_SC1A & ADC_SC1_COCO) == ADC_SC1_COCO) {
|
||||
uint16_t rssi = ADC1_RA;
|
||||
m_rssiBuffer.put(rssi);
|
||||
}
|
||||
}
|
||||
else {
|
||||
m_rssiBuffer.put(0U);
|
||||
}
|
||||
ADC1_SC1A = ADC_SC1_AIEN | PIN_RSSI; //start the next RSSI conversion
|
||||
|
||||
#else
|
||||
m_rssiBuffer.put(0U);
|
||||
#endif
|
||||
|
||||
|
||||
m_watchdog++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool CIO::getCOSInt()
|
||||
|
@ -224,4 +227,4 @@ void CIO::setP25Int(bool on)
|
|||
digitalWrite(PIN_P25, on ? HIGH : LOW);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue