From 226bdf52e109c9d1bc7971b67957903de4627d68 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Wed, 21 Dec 2016 08:49:57 +0000 Subject: [PATCH] Add Due RSSI input. --- IODue.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/IODue.cpp b/IODue.cpp index 0e44d8e..1db42e6 100644 --- a/IODue.cpp +++ b/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++; }