diff options
Diffstat (limited to 'testhal/SPC563Mxx/ADC/main.c')
-rw-r--r-- | testhal/SPC563Mxx/ADC/main.c | 231 |
1 files changed, 13 insertions, 218 deletions
diff --git a/testhal/SPC563Mxx/ADC/main.c b/testhal/SPC563Mxx/ADC/main.c index 076d506d7..398c56b4f 100644 --- a/testhal/SPC563Mxx/ADC/main.c +++ b/testhal/SPC563Mxx/ADC/main.c @@ -20,21 +20,16 @@ #include "ch.h"
#include "hal.h"
-
-#define ADC_GRP1_NUM_CHANNELS 5
-#define ADC_GRP1_BUF_DEPTH 8
-
-//#define ADC_GRP2_NUM_CHANNELS 8
-//#define ADC_GRP2_BUF_DEPTH 16
+#include "adc_cfg.h"
static adcsample_t samples1[ADC_GRP1_NUM_CHANNELS * ADC_GRP1_BUF_DEPTH];
-//static adcsample_t samples2[ADC_GRP2_NUM_CHANNELS * ADC_GRP2_BUF_DEPTH];
+static adcsample_t samples2[ADC_GRP2_NUM_CHANNELS * ADC_GRP2_BUF_DEPTH];
/*
* ADC streaming callback.
*/
-/*size_t nx = 0, ny = 0;
-static void adccallback(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
+size_t nx = 0, ny = 0;
+void adccallback(ADCDriver *adcp, adcsample_t *buffer, size_t n) {
(void)adcp;
if (samples2 == buffer) {
@@ -43,9 +38,12 @@ static void adccallback(ADCDriver *adcp, adcsample_t *buffer, size_t n) { else {
ny += n;
}
-}*/
+}
-static void adcerrorcallback(ADCDriver *adcp, adcerror_t err) {
+/*
+ * ADC error callback.
+ */
+void adcerrorcallback(ADCDriver *adcp, adcerror_t err) {
(void)adcp;
(void)err;
@@ -55,204 +53,6 @@ static void adcerrorcallback(ADCDriver *adcp, adcerror_t err) { }
/*
- * ADC conversion group.
- * Mode: Linear buffer, 8 samples of 5 channels, SW triggered.
- * Channels: ADC_CHN_VRL, ADC_CHN_VREF25, ADC_CHN_VREF50,
- * ADC_CHN_VREF75, ADC_CHN_VRH.
- *
- * NOTE: The configuration of a sequence is very complex in this ADC
- * implementation. Configurations are meant to be generated by the
- * SPC5 Studio visual configuration tool and not be written manually.
- * Writing complex sequences manually requires ad deep knowledge of both
- * the EQADC peripheral and the driver implementation.
- */
-static const adccommand_t adcgrpcfg1_commands[ADC_GRP1_NUM_CHANNELS *
- ADC_GRP1_BUF_DEPTH] = {
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRL),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF25),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF50),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF75),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRH),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRL),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF25),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF50),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF75),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRH),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRL),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF25),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF50),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF75),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRH),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRL),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF25),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF50),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF75),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRH),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRL),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF25),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF50),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF75),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRH),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRL),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF25),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF50),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF75),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRH),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRL),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF25),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF50),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF75),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRH),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRL),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF25),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF50),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VREF75),
-
- EQADC_CONV_BN_ADC0 | EQADC_CONV_LST_64 | EQADC_CONV_CAL |
- EQADC_CONV_FMT_RJU | EQADC_CONV_CONFIG_STD | EQADC_CONV_MSG_RFIFO(0) |
- EQADC_CONV_CHANNEL(ADC_CHN_VRH)
-};
-
-static const ADCConversionGroup adcgrpcfg1 = {
- FALSE,
- ADC_GRP1_NUM_CHANNELS,
- NULL,
- adcerrorcallback,
- EQADC_CFCR_MODE_SWCS,
- 0, 0, /* ISEL, EISEL.*/
- ADC_GRP1_BUF_DEPTH,
- adcgrpcfg1_commands
-};
-
-/*
- * ADC conversion group.
- * Mode: Continuous, 16 samples of 8 channels, SW triggered.
- * Channels: IN7, IN8, IN7, IN8, IN7, IN8, Sensor, VBat/2.
- */
-/*static const ADCConversionGroup adcgrpcfg2 = {
- TRUE,
- ADC_GRP2_NUM_CHANNELS,
- adccallback,
- adcerrorcallback,
-};*/
-
-/*
* Red LEDs blinker thread, times are in milliseconds.
*/
static WORKING_AREA(waThread1, 128);
@@ -285,20 +85,15 @@ int main(void) { chSysInit();
/*
- * Setting up analog inputs used by the demo.
- */
-/* palSetGroupMode(GPIOC, PAL_PORT_BIT(1) | PAL_PORT_BIT(2),
- 0, PAL_MODE_INPUT_ANALOG);*/
-
- /*
* Creates the blinker thread.
*/
chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
/*
- * Activates the ADC1 driver (unit zero queue zero).
+ * Activates the ADC1, ADC3 drivers.
*/
adcStart(&ADCD1, NULL);
+ adcStart(&ADCD3, NULL);
/*
* Linear conversion.
@@ -309,14 +104,14 @@ int main(void) { /*
* Starts an ADC continuous conversion.
*/
-// adcStartConversion(&ADCD1, &adcgrpcfg2, samples2, ADC_GRP2_BUF_DEPTH);
+ adcStartConversion(&ADCD3, &adcgrpcfg2, samples2, ADC_GRP2_BUF_DEPTH);
/*
* Normal main() thread activity, in this demo it does nothing.
*/
while (TRUE) {
if (palReadPad(PORT11, P11_BUTTON1)) {
-// adcStopConversion(&ADCD1);
+ adcStopConversion(&ADCD3);
}
chThdSleepMilliseconds(500);
}
|