This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP432P401R: Achieve maximun sample rate (1 MSPS) using dma and multiple ADC channels

Part Number: MSP432P401R

I have been working with the MSP432 in order to sample the data from 12 ADC channels at a constant sampling rate of 30 KSPS per channel, as can be seen in the FFT image of two ADC channel, it was possible to achieve 30 KSPS, two signals, one of 1 KHz and another of 10 KHz where correctly sampled.

Here is the PWM configuration:

#define SAMPLE_CLOCK_FREQUENCY  24000000
#define SAMPLE_FREQEUNCY        360000/*.0f*/

Timer_A_PWMConfig pwmConfig =
{
 .clockSource = TIMER_A_CLOCKSOURCE_SMCLK,
 .clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_1,
 .timerPeriod = (SAMPLE_CLOCK_FREQUENCY/SAMPLE_FREQEUNCY),
 .compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_1,
 .compareOutputMode = TIMER_A_OUTPUTMODE_SET_RESET,
 .dutyCycle = (SAMPLE_CLOCK_FREQUENCY/SAMPLE_FREQEUNCY)-19
};

The SAMPLE_FREQUENCY constant is 360000. As a result, the sampling frequency for each ADC channel is 360000/12 = 30 KHz; the problem is that I cannot even double this sampling frequency to 60 KHz. Once I change the  SAMPLE_FREQUENCY constant to 360000*2 the FFT figure shows the aliasing of both signals, indicating an incorrect sampling this also happens when I use a SAMPLE_CLOCK_FREQUENCY of 48000000, I am still using the two signals, one of 1 KHz and another of 10 KHz. 

In theory, the maximum sampling rate of the MSP432 is 1 MSPS, using 12 channels it should result on a sampling rate of 83333.33 samples per second at each channel, but as can be seen, is not even possible to obtain 60000 samples per second. I am using scatter-gather DMA for sampling. The data is transmitted through serial at a baud rate of 230400; I used a Matlab script that once executed initiates the analog acquisition at the MCU.

How can I solve this issue?is it possible to obtain 1 MSPS while using 12 ADC channels?

In this link you will find the CCS project and the MatLab script:

github.com/.../MSP_DMA_12-CH

  • >  The data is transmitted through serial at a baud rate of 230400

    My arithmetic says 230400/10=23040 Bytes/sec. At 2 bytes per sample, that's 11520 samples/sec (total).

    I think you need a faster link. Alternatively, consider doing some of the analysis on-board.

  • Hi Bruce, thanks for your answer. I am not looking to obtain the ADC data through real-time acquisition, that would be impossible using Serial communication unless the sampling rate is low. What I am doing is get the ADC data right after the microcontroller obtains 1024 samples per channel (I am using 12 ADC channels), not sending through serial while reading data from the ADC.

    My question is, how I can achieve the maximum sampling rate of the MSP432 using 12 analog channels (1 MSPS / 12).

    Again, I am using serial communication only to check on Matlab if the sampling rate is working correctly on the MCU.  In my case, I can see that the maximum sampling rate I can achieve is only 360 KSPS( 30 KSPS per channel using 12 channels).

  • > #define SAMPLE_FREQEUNCY        360000*2 //constant (SAMPLE_CLOCK_FREQUENCY) and

    > .timerPeriod = (SAMPLE_CLOCK_FREQUENCY/SAMPLE_FREQEUNCY),

    I suggest putting parentheses around "360000*2". As coded, I'm pretty sure the "*2" doubles (rather than halves) the period.

  • Increase SAMPLE_FREQEUNCY will result in a smaller timerPeriod, in theory, this should increase the speed of conversion, but this is not happening.

  • Did you try the parentheses?

  • I would recommend looking at this example for 1Msps operation.

    Here is another example.  The sample rate is similar, but the DMA scatter gather is attempting to parse the data to different buffers.

    Regards,

    Chris

    adc14_multiple_channel_repeat_timera_source_06.c
    /* --COPYRIGHT--,BSD_EX
     * Copyright (c) 2013, Texas Instruments Incorporated
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *
     * *  Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *
     * *  Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *
     * *  Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     *
     * --/COPYRIGHT--
     */
    //******************************************************************************
    /*
     * ADC_DAC_04.c
     *
     * Timer (1MHz) Triggered sequence of conversions (ADC14 4,5,6), where each
     * conversion in the sequence is triggered manually and the sample-hold time
     * is a function of the negative duty cycle.
     * Timing of ADC14 in pulse-sample mode:
     *     Sample-hold: defined by timer 5 cycles (timer source is TACLK, 24Mhz)
     *     Sync: 2 cycle (25Mhz)
     *     Conversion: 16 cycles (25Mhz)
     *     Mem Transfer: 1 cycle (25Mhz)
     *
     * The ADC triggers the DMA which moves the data from ADCMEM to the array
     * memory.
     *
     */
    
    #include <ti/devices/msp432p4xx/driverlib/driverlib.h>
    #include <stdio.h>
    
    /* Standard Includes */
    #include <stdint.h>
    #include <string.h>
    
    //#define WORKAROUND
    
    /* Clock system frequencies */
    #define MCLK_FREQUENCY      48000000
    #define SMCLK_FREQUENCY     24000000
    
    #define NUMBER_OF_SAMPLES       32
    #define CONVERSIONS_PER_SAMPLE  3
    
    #define ADC_TASKS               NUMBER_OF_SAMPLES*CONVERSIONS_PER_SAMPLE+2
    
    uint16_t dataSet_01[NUMBER_OF_SAMPLES][CONVERSIONS_PER_SAMPLE];
    uint16_t dataSet_02[NUMBER_OF_SAMPLES][CONVERSIONS_PER_SAMPLE];
    
    uint16_t sampleCnt;
    
    /* DMA Control Table */
    #if defined(__TI_COMPILER_VERSION__)
    #pragma DATA_ALIGN(MSP_EXP432P401RLP_DMAControlTable, 1024)
    #elif defined(__IAR_SYSTEMS_ICC__)
    #pragma data_alignment=1024
    #elif defined(__GNUC__)
    __attribute__ ((aligned (1024)))
    #elif defined(__CC_ARM)
    __align(1024)
    #endif
    static DMA_ControlTable MSP_EXP432P401RLP_DMAControlTable[16];  // 8 primary and 8 alternate
    
    volatile uint8_t switch_data = 0;
    
    const uint8_t forceP1B2ISR = 0x04;  // P1.2 is high
    const uint8_t forceP1B3ISR = 0x09;  // P1.3 is high and P1.0 is high
    /*
     * TA0 PWM Configuration
     * Timer used to Trigger ADC
     * SMCLK -> SMCLK_FREQUENCY
     * Sample Frequency -> SAMPLE_FREQUENCY
     */
    const Timer_A_PWMConfig pwmConfig =
    {
            TIMER_A_CLOCKSOURCE_SMCLK,              // 24Mhz
            TIMER_A_CLOCKSOURCE_DIVIDER_1,          //
            23,                                     // 23+1 period,
    //        71,
            TIMER_A_CAPTURECOMPARE_REGISTER_1,      // Duty Cycle Defined in CCR1
            TIMER_A_OUTPUTMODE_SET_RESET,
            19                                      // Set on 19 and reset on 0
    };
    
    /* SPI Master Configuration Parameter */
    const eUSCI_SPI_MasterConfig spiMasterConfig =
    {
            EUSCI_B_SPI_CLOCKSOURCE_SMCLK,             // SMCLK Clock Source
            SMCLK_FREQUENCY,                           // SMCLK = DCO = 24MHZ
            12000000,                                  // SPICLK = 12Mhz
            EUSCI_B_SPI_MSB_FIRST,                     // MSB First
            EUSCI_B_SPI_PHASE_DATA_CHANGED_ONFIRST_CAPTURED_ON_NEXT,    // Phase
            EUSCI_B_SPI_CLOCKPOLARITY_INACTIVITY_HIGH, // High polarity
            EUSCI_B_SPI_3PIN                           // 3Wire SPI Mode
    };
    /* DMA Task Structure */
    DMA_ControlTable pingTask,pongTask;
    /*
     *
     */
    const DMA_ControlTable AdcDmaSeq_01[ADC_TASKS] =
    {
        /*
         * Task1,
         */
    //    DMA_TaskStructEntry(3, UDMA_SIZE_16,
    //                UDMA_SRC_INC_32,(void*)&ADC14->MEM[0],
    //                UDMA_DST_INC_32, &dataSet_01[0][0],
    //                UDMA_ARB_4, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                 UDMA_DST_INC_NONE, &dataSet_01[0][0],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                 UDMA_DST_INC_NONE, &dataSet_01[0][1],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                 UDMA_DST_INC_NONE, &dataSet_01[0][2],
                 UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
    
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                  UDMA_DST_INC_NONE, &dataSet_01[1][0],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                  UDMA_DST_INC_NONE, &dataSet_01[1][1],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                  UDMA_DST_INC_NONE, &dataSet_01[1][2],
                  UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                    UDMA_DST_INC_NONE, &dataSet_01[2][0],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                    UDMA_DST_INC_NONE, &dataSet_01[2][1],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                    UDMA_DST_INC_NONE, &dataSet_01[2][2],
                    UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                  UDMA_DST_INC_NONE, &dataSet_01[3][0],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                  UDMA_DST_INC_NONE, &dataSet_01[3][1],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                  UDMA_DST_INC_NONE, &dataSet_01[3][2],
                  UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                    UDMA_DST_INC_NONE, &dataSet_01[4][0],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                    UDMA_DST_INC_NONE, &dataSet_01[4][1],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                    UDMA_DST_INC_NONE, &dataSet_01[4][2],
                    UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                  UDMA_DST_INC_NONE, &dataSet_01[5][0],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                  UDMA_DST_INC_NONE, &dataSet_01[5][1],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                  UDMA_DST_INC_NONE, &dataSet_01[5][2],
                  UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                    UDMA_DST_INC_NONE, &dataSet_01[6][0],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                    UDMA_DST_INC_NONE, &dataSet_01[6][1],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                    UDMA_DST_INC_NONE, &dataSet_01[6][2],
                    UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                  UDMA_DST_INC_NONE, &dataSet_01[7][0],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                  UDMA_DST_INC_NONE, &dataSet_01[7][1],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                  UDMA_DST_INC_NONE, &dataSet_01[7][2],
                  UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                    UDMA_DST_INC_NONE, &dataSet_01[8][0],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                    UDMA_DST_INC_NONE, &dataSet_01[8][1],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                    UDMA_DST_INC_NONE, &dataSet_01[8][2],
                    UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                  UDMA_DST_INC_NONE, &dataSet_01[9][0],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                  UDMA_DST_INC_NONE, &dataSet_01[9][1],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                  UDMA_DST_INC_NONE, &dataSet_01[9][2],
                  UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                    UDMA_DST_INC_NONE, &dataSet_01[10][0],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                    UDMA_DST_INC_NONE, &dataSet_01[10][1],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                    UDMA_DST_INC_NONE, &dataSet_01[10][2],
                    UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                  UDMA_DST_INC_NONE, &dataSet_01[11][0],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                  UDMA_DST_INC_NONE, &dataSet_01[11][1],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                  UDMA_DST_INC_NONE, &dataSet_01[11][2],
                  UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                    UDMA_DST_INC_NONE, &dataSet_01[12][0],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                    UDMA_DST_INC_NONE, &dataSet_01[12][1],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                    UDMA_DST_INC_NONE, &dataSet_01[12][2],
                    UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                  UDMA_DST_INC_NONE, &dataSet_01[13][0],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                  UDMA_DST_INC_NONE, &dataSet_01[13][1],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                  UDMA_DST_INC_NONE, &dataSet_01[13][2],
                  UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                    UDMA_DST_INC_NONE, &dataSet_01[14][0],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                    UDMA_DST_INC_NONE, &dataSet_01[14][1],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                    UDMA_DST_INC_NONE, &dataSet_01[14][2],
                    UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                  UDMA_DST_INC_NONE, &dataSet_01[15][0],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                  UDMA_DST_INC_NONE, &dataSet_01[15][1],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                  UDMA_DST_INC_NONE, &dataSet_01[15][2],
                  UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                    UDMA_DST_INC_NONE, &dataSet_01[16][0],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                    UDMA_DST_INC_NONE, &dataSet_01[16][1],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                    UDMA_DST_INC_NONE, &dataSet_01[16][2],
                    UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                  UDMA_DST_INC_NONE, &dataSet_01[17][0],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                  UDMA_DST_INC_NONE, &dataSet_01[17][1],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                  UDMA_DST_INC_NONE, &dataSet_01[17][2],
                  UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                    UDMA_DST_INC_NONE, &dataSet_01[18][0],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                    UDMA_DST_INC_NONE, &dataSet_01[18][1],
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
          DMA_TaskStructEntry(1, UDMA_SIZE_16,
                    UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                    UDMA_DST_INC_NONE, &dataSet_01[18][2],
                    UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                  UDMA_DST_INC_NONE, &dataSet_01[19][0],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                  UDMA_DST_INC_NONE, &dataSet_01[19][1],
                  UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                  UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                  UDMA_DST_INC_NONE, &dataSet_01[19][2],
                  UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[20][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[20][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[20][2],
                UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[21][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[21][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[21][2],
                UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[22][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[22][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[22][2],
                UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[23][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[23][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[23][2],
                UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[24][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[24][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[24][2],
                UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[25][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[25][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[25][2],
                UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[26][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[26][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[26][2],
                UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[27][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[27][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[27][2],
                UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[28][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[28][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[28][2],
                UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[29][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[29][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[29][2],
                UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[30][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[30][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[30][2],
                UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                UDMA_DST_INC_NONE, &dataSet_01[31][0],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                UDMA_DST_INC_NONE, &dataSet_01[31][1],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                UDMA_DST_INC_NONE, &dataSet_01[31][2],
                UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
    
    
       DMA_TaskStructEntry(1, UDMA_SIZE_8,
                     UDMA_SRC_INC_8, (void *)&forceP1B2ISR,
                     UDMA_DST_INC_8, (void *)&P1->OUT,
                     UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(4, UDMA_SIZE_32,
                    UDMA_SRC_INC_32, (void *)&pongTask,
                    UDMA_DST_INC_32, (void *)&MSP_EXP432P401RLP_DMAControlTable[7],
                    UDMA_ARB_4, UDMA_MODE_MEM_SCATTER_GATHER)
    };
    
    const DMA_ControlTable AdcDmaSeq_02[ADC_TASKS] =
    {
        /*
         * Task1,
         */
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
              UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
              UDMA_DST_INC_NONE, &dataSet_02[0][0],
              UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
              UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
              UDMA_DST_INC_NONE, &dataSet_02[0][1],
              UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
              UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
              UDMA_DST_INC_NONE, &dataSet_02[0][2],
              UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
    
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
               UDMA_DST_INC_NONE, &dataSet_02[1][0],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
               UDMA_DST_INC_NONE, &dataSet_02[1][1],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
               UDMA_DST_INC_NONE, &dataSet_02[1][2],
               UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                 UDMA_DST_INC_NONE, &dataSet_02[2][0],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                 UDMA_DST_INC_NONE, &dataSet_02[2][1],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                 UDMA_DST_INC_NONE, &dataSet_02[2][2],
                 UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
               UDMA_DST_INC_NONE, &dataSet_02[3][0],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
               UDMA_DST_INC_NONE, &dataSet_02[3][1],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
               UDMA_DST_INC_NONE, &dataSet_02[3][2],
               UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                 UDMA_DST_INC_NONE, &dataSet_02[4][0],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                 UDMA_DST_INC_NONE, &dataSet_02[4][1],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                 UDMA_DST_INC_NONE, &dataSet_02[4][2],
                 UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
               UDMA_DST_INC_NONE, &dataSet_02[5][0],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
               UDMA_DST_INC_NONE, &dataSet_02[5][1],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
               UDMA_DST_INC_NONE, &dataSet_02[5][2],
               UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                 UDMA_DST_INC_NONE, &dataSet_02[6][0],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                 UDMA_DST_INC_NONE, &dataSet_02[6][1],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                 UDMA_DST_INC_NONE, &dataSet_02[6][2],
                 UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
               UDMA_DST_INC_NONE, &dataSet_02[7][0],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
               UDMA_DST_INC_NONE, &dataSet_02[7][1],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
               UDMA_DST_INC_NONE, &dataSet_02[7][2],
               UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                 UDMA_DST_INC_NONE, &dataSet_02[8][0],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                 UDMA_DST_INC_NONE, &dataSet_02[8][1],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                 UDMA_DST_INC_NONE, &dataSet_02[8][2],
                 UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
               UDMA_DST_INC_NONE, &dataSet_02[9][0],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
               UDMA_DST_INC_NONE, &dataSet_02[9][1],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
               UDMA_DST_INC_NONE, &dataSet_02[9][2],
               UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                 UDMA_DST_INC_NONE, &dataSet_02[10][0],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                 UDMA_DST_INC_NONE, &dataSet_02[10][1],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                 UDMA_DST_INC_NONE, &dataSet_02[10][2],
                 UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
               UDMA_DST_INC_NONE, &dataSet_02[11][0],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
               UDMA_DST_INC_NONE, &dataSet_02[11][1],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
               UDMA_DST_INC_NONE, &dataSet_02[11][2],
               UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                 UDMA_DST_INC_NONE, &dataSet_02[12][0],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                 UDMA_DST_INC_NONE, &dataSet_02[12][1],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                 UDMA_DST_INC_NONE, &dataSet_02[12][2],
                 UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
               UDMA_DST_INC_NONE, &dataSet_02[13][0],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
               UDMA_DST_INC_NONE, &dataSet_02[13][1],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
               UDMA_DST_INC_NONE, &dataSet_02[13][2],
               UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                 UDMA_DST_INC_NONE, &dataSet_02[14][0],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                 UDMA_DST_INC_NONE, &dataSet_02[14][1],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                 UDMA_DST_INC_NONE, &dataSet_02[14][2],
                 UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
               UDMA_DST_INC_NONE, &dataSet_02[15][0],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
               UDMA_DST_INC_NONE, &dataSet_02[15][1],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
               UDMA_DST_INC_NONE, &dataSet_02[15][2],
               UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                 UDMA_DST_INC_NONE, &dataSet_02[16][0],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                 UDMA_DST_INC_NONE, &dataSet_02[16][1],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                 UDMA_DST_INC_NONE, &dataSet_02[16][2],
                 UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
               UDMA_DST_INC_NONE, &dataSet_02[17][0],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
               UDMA_DST_INC_NONE, &dataSet_02[17][1],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
               UDMA_DST_INC_NONE, &dataSet_02[17][2],
               UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
                 UDMA_DST_INC_NONE, &dataSet_02[18][0],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
                 UDMA_DST_INC_NONE, &dataSet_02[18][1],
                 UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
                 UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
                 UDMA_DST_INC_NONE, &dataSet_02[18][2],
                 UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
               UDMA_DST_INC_NONE, &dataSet_02[19][0],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
               UDMA_DST_INC_NONE, &dataSet_02[19][1],
               UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
               UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
               UDMA_DST_INC_NONE, &dataSet_02[19][2],
               UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[20][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[20][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[20][2],
             UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[21][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[21][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[21][2],
             UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[22][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[22][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[22][2],
             UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[23][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[23][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[23][2],
             UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[24][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[24][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[24][2],
             UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[25][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[25][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[25][2],
             UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[26][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[26][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[26][2],
             UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[27][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[27][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[27][2],
             UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[28][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[28][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[28][2],
             UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[29][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[29][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[29][2],
             UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[30][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[30][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[30][2],
             UDMA_ARB_1, UDMA_MODE_PER_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[0],
             UDMA_DST_INC_NONE, &dataSet_02[31][0],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[1],
             UDMA_DST_INC_NONE, &dataSet_02[31][1],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(1, UDMA_SIZE_16,
             UDMA_SRC_INC_NONE,(void*)&ADC14->MEM[2],
             UDMA_DST_INC_NONE, &dataSet_02[31][2],
             UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
    
        DMA_TaskStructEntry(1, UDMA_SIZE_8,
                    UDMA_SRC_INC_8, (void *)&forceP1B3ISR,
                    UDMA_DST_INC_8, (void *)&P1->OUT,
                    UDMA_ARB_1, UDMA_MODE_MEM_SCATTER_GATHER),
        DMA_TaskStructEntry(4, UDMA_SIZE_32,
                    UDMA_SRC_INC_32, (void *)&pingTask,
                    UDMA_DST_INC_32, (void *)&MSP_EXP432P401RLP_DMAControlTable[7],
                    UDMA_ARB_4, UDMA_MODE_MEM_SCATTER_GATHER)
    };
    
    uint16_t adcIndex;
    bool dataSet0Ready;
    
    void sendData(uint16_t*);
    
    int main(void)
    {
        /* Halting WDT  */
        MAP_WDT_A_holdTimer();
    
        /*
         * Revision C silicon supports wait states of 1 at 48Mhz
         */
        MAP_PCM_setCoreVoltageLevel(PCM_VCORE1);
        MAP_FlashCtl_setWaitState(FLASH_BANK0, 1);
        MAP_FlashCtl_setWaitState(FLASH_BANK1, 1);
    
        /*
         * Setting up clocks
         * MCLK = MCLK = 48MHz
         * SMCLK = MCLK/2 = 24Mhz
         * ACLK = REFO = 32Khz
         */
        MAP_CS_setDCOFrequency(48000000);
        MAP_CS_initClockSignal(CS_ACLK, CS_REFOCLK_SELECT, CS_CLOCK_DIVIDER_1);
        MAP_CS_initClockSignal(CS_SMCLK, CS_DCOCLK_SELECT, CS_CLOCK_DIVIDER_2);
        MAP_CS_initClockSignal(CS_MCLK, CS_DCOCLK_SELECT, CS_CLOCK_DIVIDER_1);
    
        /*
         * Debug,
         * output TA0.1
         */
        P2->DIR |= (BIT4);
        P2->SEL0 |= BIT4;
        P2->SEL1 &= ~BIT4;
    
        /* Configuring P1.0 as output for debug */
        MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);
        MAP_GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN0);
    
        /*
         * Non-conventional usage of P1.2 and P1.3 as 'internal' interrupt
         * triggered from DMA.
         */
        MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1, (GPIO_PIN2 + GPIO_PIN3));
        MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, (GPIO_PIN2 + GPIO_PIN3));
        MAP_GPIO_interruptEdgeSelect(GPIO_PORT_P1,(GPIO_PIN2 + GPIO_PIN3),
                                        GPIO_LOW_TO_HIGH_TRANSITION);
        MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1,(GPIO_PIN2 + GPIO_PIN3));
        MAP_GPIO_enableInterrupt(GPIO_PORT_P1,(GPIO_PIN2 + GPIO_PIN3));
    
        /* Selecting P1.5 P1.6 and P1.7 in SPI mode */
        MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1,
                GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7, GPIO_PRIMARY_MODULE_FUNCTION);
    
        /* Configure P2.0, P2.1, and P2.2 for debug*/
        MAP_GPIO_setAsOutputPin(GPIO_PORT_P2, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2);
        MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P2, GPIO_PIN0|GPIO_PIN1|GPIO_PIN2);
    
        /* Configuring GPIOs for Analog In P5.1,5.0,4.7 */
        MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5,
                GPIO_PIN1 | GPIO_PIN0, GPIO_TERTIARY_MODULE_FUNCTION);
        MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P4,
                GPIO_PIN7, GPIO_TERTIARY_MODULE_FUNCTION);
    
        /*
         * Initializing ADC (ADCOSC/1/1)
         * 25Mhz
         */
        MAP_ADC14_enableModule();
        MAP_ADC14_initModule(ADC_CLOCKSOURCE_ADCOSC, ADC_PREDIVIDER_1, ADC_DIVIDER_1,
                0);
    
        /* Configuring ADC Memory (ADC_MEM0 - ADC_MEM4 (A4 - A6)  with repeat)
         * with internal 2.5v reference */
        MAP_ADC14_configureMultiSequenceMode(ADC_MEM0, ADC_MEM2, true);
        MAP_ADC14_configureConversionMemory(ADC_MEM0,
                ADC_VREFPOS_AVCC_VREFNEG_VSS,
                ADC_INPUT_A4, ADC_NONDIFFERENTIAL_INPUTS);
        MAP_ADC14_configureConversionMemory(ADC_MEM1,
                ADC_VREFPOS_AVCC_VREFNEG_VSS,
                ADC_INPUT_A5, ADC_NONDIFFERENTIAL_INPUTS);
        MAP_ADC14_configureConversionMemory(ADC_MEM2,
                ADC_VREFPOS_AVCC_VREFNEG_VSS,
                ADC_INPUT_A6, ADC_NONDIFFERENTIAL_INPUTS);
        /*
         * Configuring the sample trigger to be sourced from Timer_A0 CCR1
         * and setting it to automatic iteration after it is triggered
         */
        MAP_ADC14_setSampleHoldTrigger(ADC_TRIGGER_SOURCE1, false);
        /*
         * Disable sample timer (default), use pulse mode.
         */
        MAP_ADC14_disableSampleTimer();
        MAP_ADC14_enableConversion();
    
        /* Configuring DMA module */
        MAP_DMA_enableModule();
        MAP_DMA_setControlBase(MSP_EXP432P401RLP_DMAControlTable);
    
         /* Disabling channel attributes */
        MAP_DMA_disableChannelAttribute(DMA_CH7_ADC14,
                                     UDMA_ATTR_USEBURST |
                                     UDMA_ATTR_HIGH_PRIORITY |
                                     UDMA_ATTR_REQMASK);
    
        MAP_DMA_setChannelScatterGather(DMA_CH7_ADC14,ADC_TASKS,(void*)&AdcDmaSeq_02[0],true);
        pongTask = MSP_EXP432P401RLP_DMAControlTable[7];
    
        MAP_DMA_setChannelScatterGather(DMA_CH7_ADC14,ADC_TASKS,(void*)&AdcDmaSeq_01[0],true);
        pingTask = MSP_EXP432P401RLP_DMAControlTable[7];
    
        MAP_DMA_assignChannel(DMA_CH7_ADC14);
        MAP_DMA_enableChannel(7);
    
        /*
         *
         */
        /* Configuring SPI in 3wire master mode */
        MAP_SPI_initMaster(EUSCI_B0_BASE, &spiMasterConfig);
    
        /* Enable SPI module */
        MAP_SPI_enableModule(EUSCI_B0_BASE);
    
        MAP_Interrupt_disableSleepOnIsrExit();
    
        MAP_Interrupt_enableInterrupt(INT_PORT1);
        MAP_Interrupt_enableMaster();
    
        /*
         * Starting the Timer
         * Configuring Timer_A in continuous mode and sourced from SMCLK
         */
        MAP_Timer_A_generatePWM(TIMER_A0_BASE, &pwmConfig);
    
    
        while(1)
        {
            MAP_PCM_gotoLPM0();
    //        Debug
            P2->OUT |= BIT0;
    //        if(dataSet0Ready)
    //        {
    //            /*
    //             *
    //             */
    //            sendData(&dataSet_01[0][0]);
    //        }
    //        else
    //        {
    //            sendData(&dataSet_02[0][0]);
    //        }
    //        Debug
            P2->OUT &= ~BIT0;
        }
    }
    
    #if     __TI_COMPILER_VERSION__ >= 15009000
    __attribute__((ramfunc))
    #endif
    void sendData(uint16_t* arrayPtr)
    {
        volatile uint16_t ii,jj;
    
        for(ii=0;ii<NUMBER_OF_SAMPLES;ii++)
        {
            for(jj=0;jj<CONVERSIONS_PER_SAMPLE;jj++)
            {
                while(!(EUSCI_B0->IFG & EUSCI_B_IFG_TXIFG0));
                EUSCI_B0->TXBUF = (uint8_t)arrayPtr[ii*3 + jj];
                while(!(EUSCI_B0->IFG & EUSCI_B_IFG_TXIFG0));
                EUSCI_B0->TXBUF = (uint8_t)(arrayPtr[ii*3 + jj]>>8);
            }
        }
    }
    
    #if     __TI_COMPILER_VERSION__ >= 15009000
    __attribute__((ramfunc))
    #endif
    void PORT1_IRQHandler(void)
    {
        uint32_t status;
        volatile uint16_t   ii;
    //        Debug
        P2->OUT |= BIT1;
        status = MAP_GPIO_getEnabledInterruptStatus(GPIO_PORT_P1);
        MAP_GPIO_clearInterruptFlag(GPIO_PORT_P1, status);
    
        if(status == GPIO_PIN2)
        {
            MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN2);
            dataSet0Ready = true;
        }
        if(status == GPIO_PIN3)
        {
            MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN3);
            dataSet0Ready = false;
            //debug
            MAP_Timer_A_stopTimer(TIMER_A0_BASE);
            __no_operation();
        }
    //        Debug
        P2->OUT &= ~BIT1;
    }
    

    Regards,

    Chris

**Attention** This is a public forum