<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Kinetis MicrocontrollersのトピックADC hardware average with Timer trigger not counting all samples</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793431#M48264</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Community,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have been working with Kinetis MK24FN1M0 microcontroller and performing ADC measurements. According to our requirement, the ADC has to perform measurements every 10µs. For this I have used the FTM timer 2 and configured it to trigger the ADC every 10µs. Then, we wanted to take an average every 32 measurements and generate an ADC Interrupt. To my surprise, the ADC with hardware averaging count of 32 is generating an interrupt every 175 µs . When I trigger and perform ADC measurements every 10µs and 32 ADC measurements should sum up to 320µs. But this is not working. Initially, I thought it was timer which was not working correctly, I disabled the hardware averaging and observed the interval betwen every ADC Interrupt. It is exactly 10µs. But as soon as I enable the Hardware Averaging, and check the interval between the Interrupts it is just 175µs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I then changed the timer trigger interval to 1 ms, but the hardware averaging ADC interrupt shows up again after 175µs. I don't understand this behaviour.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have even checked the ADC registers, if I have configured anything wrong but everything seems right with the configuration. I am very disappointed with the result and I would really appreciate if I could get the Hardware averaging working correctly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any suggestions in finding a solution to this problem would be of great help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thankyou!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 05 Sep 2018 06:46:43 GMT</pubDate>
    <dc:creator>vinay_devarakon</dc:creator>
    <dc:date>2018-09-05T06:46:43Z</dc:date>
    <item>
      <title>ADC hardware average with Timer trigger not counting all samples</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793431#M48264</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Community,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have been working with Kinetis MK24FN1M0 microcontroller and performing ADC measurements. According to our requirement, the ADC has to perform measurements every 10µs. For this I have used the FTM timer 2 and configured it to trigger the ADC every 10µs. Then, we wanted to take an average every 32 measurements and generate an ADC Interrupt. To my surprise, the ADC with hardware averaging count of 32 is generating an interrupt every 175 µs . When I trigger and perform ADC measurements every 10µs and 32 ADC measurements should sum up to 320µs. But this is not working. Initially, I thought it was timer which was not working correctly, I disabled the hardware averaging and observed the interval betwen every ADC Interrupt. It is exactly 10µs. But as soon as I enable the Hardware Averaging, and check the interval between the Interrupts it is just 175µs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I then changed the timer trigger interval to 1 ms, but the hardware averaging ADC interrupt shows up again after 175µs. I don't understand this behaviour.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have even checked the ADC registers, if I have configured anything wrong but everything seems right with the configuration. I am very disappointed with the result and I would really appreciate if I could get the Hardware averaging working correctly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any suggestions in finding a solution to this problem would be of great help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thankyou!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 05 Sep 2018 06:46:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793431#M48264</guid>
      <dc:creator>vinay_devarakon</dc:creator>
      <dc:date>2018-09-05T06:46:43Z</dc:date>
    </item>
    <item>
      <title>Re: ADC hardware average with Timer trigger not counting all samples</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793432#M48265</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Vinay Kumar,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thank you for your interest in NXP kinetis product, I would like to provide service for you.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Actually, the ADC conversion time can be calculated, it is totally determined by your ADC module configuration.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Please check the K24 reference manual, chapter: 35.4.4.5 Sample time and total conversion time&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/68300i33B652DB424708A8/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Please calculate the conversion time with your ADC configuration, then you can determine what the FTM trigger time you need to use.&lt;/P&gt;&lt;P&gt;You also can use the continuous mode to test the conversion time at first.&lt;/P&gt;&lt;P&gt;Please calculate it at first.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Kerry&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Sep 2018 06:12:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793432#M48265</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2018-09-06T06:12:12Z</dc:date>
    </item>
    <item>
      <title>Re: ADC hardware average with Timer trigger not counting all samples</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793433#M48266</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Kerry Zhou,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the timely reply. I have already calculated the ADC conversion time and it is 6,1041 µs. My Timer triggers every 10µs. I could reduce my ADC conversion time to 5,101 µs by removing the Long sample time of 10. At the Moment, both my ADCs ( I assume I have two ADCs as stated&amp;nbsp;in K24 reference Manual ) run at 6 MHz with 16-bit Resolution and my System Clock Frequency is 48 MHz. All this works good. But, as soon as I enable&amp;nbsp;the Hardware averaging with 32 conversions, I expect to get an ADC Interrupt or Setting of COCO flag after 32 * 10µs = 320 µs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But when I measure the Interrupt Interval, I measure every time around 165-170µs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After trying so many Things, I wanted to try out the Continuous mode. After I enabled the continuous mode with Software trigger, only one of my ADC seems to be running even though I have written into SC1A Registers of both ADC0 and ADC1. Only, the first seems to be running.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My Basic Question is do I really have physically two ADCs in K24 or is it only one ADC which uses a MUX ? If it&amp;nbsp;uses a MUX, then in the Reference Manual at&amp;nbsp;Section 3.7.1.1 it is stated that this device has two ADCs. Even in the Software I have seen two Instances of ADCs. If that is so what is right way of configuring the two ADCs so that both run simultaneuously with precision. I don't mind getting the Interrupt around 1-2µs delayed ( because of Interrupt prioirty or so) , but I want the measurements on both ADCs to run exactly at the same time instant. Is this really possible on this device ??&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Looking Forward to your Suggestions!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thankyou!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Sep 2018 08:32:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793433#M48266</guid>
      <dc:creator>vinay_devarakon</dc:creator>
      <dc:date>2018-09-06T08:32:46Z</dc:date>
    </item>
    <item>
      <title>Re: ADC hardware average with Timer trigger not counting all samples</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793434#M48267</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Vinay,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks a lot for your detail information.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MK24 really have two ADC modules.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; From your description, your problem is in the hardware averaging, no hardware averaging seems no problem.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; So, do you mind you shar your problem project with me, I would like to help you to check it. You can delete all the other important code, just give me the project which can reproduce the problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Kerry&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Sep 2018 09:19:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793434#M48267</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2018-09-07T09:19:33Z</dc:date>
    </item>
    <item>
      <title>Re: ADC hardware average with Timer trigger not counting all samples</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793435#M48268</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kerry,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is my Code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define WITH_DMA (0) /*with DMA */&lt;/P&gt;&lt;P&gt;#if WITH_DMA&lt;BR /&gt;#define DMA_INTERRUPT (1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*with DMA Interrupt*/&lt;BR /&gt;#define AUTONOM (0)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*automatic triggering of ADC conversions*/&lt;BR /&gt;#define CYCLIC_CONTINUOUS (0) /*continuous triggering of ADC conversions*/&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;#define HZ_TO_MHZ(x) (x / 1000000)&lt;/P&gt;&lt;P&gt;#define TEST_TOGGLE_PIN (0)&lt;BR /&gt;#define WITH_FTM_INTERRUPT (0)&lt;BR /&gt;#define HARDWARE_TRIGGER (1)&lt;BR /&gt;#define AVERAGING_HARDWARE (0)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*------------------------------------------------------------------------*/ /**&lt;BR /&gt;* \brief&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initializes the two instances of the ADC and configures the DMA&lt;BR /&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; such that the ADC conversions are started by a DMA channel and&lt;BR /&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the other DMA channel reads the result from the ADC Data register&lt;BR /&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and saves them in a RAM buffer.&lt;BR /&gt;* \param[in]&amp;nbsp;&amp;nbsp;&amp;nbsp; none&lt;BR /&gt;* \return&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; none&lt;BR /&gt;*/&amp;nbsp; //---------------------------------------------------------------------------&lt;BR /&gt;void CADC_MK24FN1M0::init()&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adc16_chn_config_t adcChnConfig;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC_Type * bases[NUMBER_OF_INSTANCES]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = {m_stADC[0]-&amp;gt;base, m_stADC[1]-&amp;gt;base};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32 Instances[NUMBER_OF_INSTANCES]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = {m_stADC[0]-&amp;gt;instances, m_stADC[1]-&amp;gt;instances};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adc16_chn_t channelIndex[NUMBER_OF_INSTANCES]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = {m_stADC[0]-&amp;gt;chnIdx, m_stADC[1]-&amp;gt;chnIdx};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; adc16_chn_mux_mode_t muxConfig[NUMBER_OF_INSTANCES] = {m_stADC[0]-&amp;gt;adcMuxChannel, m_stADC[1]-&amp;gt;adcMuxChannel};&lt;/P&gt;&lt;P&gt;&amp;nbsp;/* Config ADC module */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; const adc16_converter_config_t convConfig =&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; Enables low power. @internal gui name="Low power mode" id="LowPowerMode" */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kAdc16ClkDividerOf8,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; Selects the divider of input clock source. @internal gui name="Clock divider" id="ClockDivider" */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; true,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; Enables the long sample time. @internal gui name="Long sample time" id="LongSampleTime" */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kAdc16ResolutionBitOf16, /*!&amp;lt; Selects the sample resolution mode. @internal gui name="Resolution" id="Resolution" */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;kAdc16ClkSrcOfBusClk,&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; Selects the input clock source to converter. @internal gui name="Clock source" id="ClockSource" */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false, /*!&amp;lt; Enables the asynchronous clock inside the ADC. @internal gui name="Internal async. clock" id="InternalAsyncClock" */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false, /*!&amp;lt; Enables the high-speed mode. @internal gui name="High speed mode" id="HighSpeed" */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kAdc16LongSampleCycleOf10, /*!&amp;lt; Selects the long sample mode. @internal gui name="Long sample mode" id="LongSampleMode" */&lt;BR /&gt;#if HARDWARE_TRIGGER&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;true,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; Enables the hardware trigger function. @internal gui name="Hardware trigger" id="HwTrigger" */&lt;BR /&gt;#else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;false,&lt;BR /&gt;#endif&lt;BR /&gt;&amp;nbsp;&amp;nbsp;kAdc16RefVoltSrcOfVref, /*!&amp;lt; Selects the reference voltage source. @internal gui name="Voltage reference" id="ReferenceVoltage" */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; Enables continuous conversion mode. @internal gui name="Continuous mode" id="ContinuousMode" */&lt;/P&gt;&lt;P&gt;#if FSL_FEATURE_ADC16_HAS_DMA&lt;BR /&gt;#if WITH_DMA&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; true&lt;BR /&gt;#else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false /*!&amp;lt; Enables the DMA for ADC converter. @internal gui name="DMA mode" id="DMASupport" */&lt;BR /&gt;#endif /*WITH_DMA*/&lt;BR /&gt;#endif /*FSL_FEATURE_ADC16_HAS_DMA*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Config hardware average function */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; const adc16_hw_average_config_t averageConfig = &lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;#if AVERAGING_HARDWARE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;true,&lt;BR /&gt;#else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; Enable the hardware average function. */&lt;BR /&gt;#endif&lt;BR /&gt;&amp;nbsp;&amp;nbsp;kAdc16HwAverageCountOf32&amp;nbsp; /*!&amp;lt; Select the count of conversion result for accumulator. */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (uint32 i = 0; i &amp;lt; m_numberOfUsedInstances; ++i)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable ADC interrupt */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_DisableIRQ(m_stADC[i]-&amp;gt;ADC_IRQn);&lt;/P&gt;&lt;P&gt;#if WITH_DMA&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* De-Init DMAMUX */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_HAL_SetChannelCmd(m_stADC[i]-&amp;gt;DMAMUX_Peripheral, static_cast&amp;lt;uint32&amp;gt;(m_stADC[i]-&amp;gt;EDMA_ADC_Channel1), false);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* De-Init EDMA */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_HTCDClearReg(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_ClearIntStatusFlag(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_ClearErrorIntStatusFlag(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Disable DMA ADC interrupt */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_DisableIRQ(m_stADC[i]-&amp;gt;EDMA_ADCIRQn);&lt;BR /&gt;#endif /*WITH_DMA*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Un-gate ADC clock */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOCK_SYS_EnableAdcClock(Instances[i]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable ADC module clock*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC16_HAL_Init(bases[i]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Calibrate ADC module */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC16_HAL_SetAutoCalibrationCmd(bases[i], true);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (ADC16_HAL_GetAutoCalibrationActiveFlag(bases[i]))&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASSERT_ALWAYS(!ADC16_HAL_GetAutoCalibrationFailedFlag(bases[i]));&lt;/P&gt;&lt;P&gt;#if FSL_FEATURE_ADC16_HAS_DIFF_MODE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint16 minusGain = ADC16_HAL_GetAutoMinusSideGainValue(bases[i]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC16_HAL_SetMinusSideGainValue(bases[i], minusGain);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint16 plusGain = ADC16_HAL_GetAutoPlusSideGainValue(bases[i]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC16_HAL_SetPlusSideGainValue(bases[i], plusGain);&lt;BR /&gt;#endif /* FSL_FEATURE_ADC16_HAS_DIFF_MODE */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC16_HAL_ConfigConverter(bases[i], &amp;amp;convConfig);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC16_HAL_ConfigHwAverage(bases[i], &amp;amp;averageConfig);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Configure ADC channel, Interrupt and differential enable */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adcChnConfig.chnIdx = channelIndex[i];&lt;/P&gt;&lt;P&gt;#if WITH_DMA&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adcChnConfig.convCompletedIntEnable = false;&amp;nbsp; // Disables the ADC interrupt&lt;BR /&gt;#else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adcChnConfig.convCompletedIntEnable = true;&amp;nbsp; // Enables the ADC interrupt&lt;BR /&gt;#endif /*WITH_DMA*/&lt;/P&gt;&lt;P&gt;#if FSL_FEATURE_ADC16_HAS_DIFF_MODE&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adcChnConfig.diffConvEnable = false; /*!&amp;lt; Enable/ Disable the differential conversion. */&lt;BR /&gt;#endif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*FSL_FEATURE_ADC16_HAS_DIFF_MODE*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC16_HAL_ConfigChn(bases[i], muxConfig[i], &amp;amp;adcChnConfig);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC16_HAL_SetChnMuxMode(bases[i], muxConfig[i]);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialise and reset TCD Buffers for the two DMA Channels */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edma_software_tcd_t stcd[TCD_COUNT];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memset(stcd, 0, sizeof(stcd));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memset(m_configDMA, 0, sizeof(m_configDMA));&lt;/P&gt;&lt;P&gt;#if WITH_DMA&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Configure ADC DMA */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[0].srcAddr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = reinterpret_cast&amp;lt;uint32_t&amp;gt;(&amp;amp;ADC_R_REG(m_stADC[i]-&amp;gt;base, 0));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[0].destAddr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = reinterpret_cast&amp;lt;uint32_t&amp;gt;(&amp;amp;m_stDMA_Collect[ (3*i) + 2]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[0].srcTransferSize&amp;nbsp;&amp;nbsp;&amp;nbsp; = kEDMATransferSize_2Bytes;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[0].destTransferSize&amp;nbsp;&amp;nbsp; = kEDMATransferSize_2Bytes;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[0].srcOffset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[0].destOffset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00;&amp;nbsp; // 2 Bytes&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[0].srcLastAddrAdjust&amp;nbsp; = 0x00;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;m_configDMA[0].destLastAddrAdjust = 0x00; //static_cast&amp;lt;uint32_t&amp;gt;(-6);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[0].srcModulo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = kEDMAModuloDisable;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[0].destModulo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = kEDMAModuloDisable;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[0].minorLoopCount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2U;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[0].majorLoopCount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1U;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DMAMUX init */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_HAL_SetTriggerSource(m_stADC[i]-&amp;gt;DMAMUX_Peripheral, static_cast&amp;lt;uint32&amp;gt;(m_stADC[i]-&amp;gt;EDMA_ADC_Channel1),&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static_cast&amp;lt;uint8&amp;gt;(m_stADC[i]-&amp;gt;DMAMUX_ADC_Source));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_HAL_SetChannelCmd(m_stADC[i]-&amp;gt;DMAMUX_Peripheral, static_cast&amp;lt;uint32&amp;gt;(m_stADC[i]-&amp;gt;EDMA_ADC_Channel1), true);&lt;/P&gt;&lt;P&gt;#ifdef AUTONOM /*automatic triggering of ADC conversions*/&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_STCDSetChannelMinorLink(&amp;amp;stcd[0], static_cast&amp;lt;uint32&amp;gt;(m_stADC[i]-&amp;gt;EDMA_ADC_Channel2), true);&lt;BR /&gt;#else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_STCDSetChannelMinorLink(&amp;amp;stcd[0], static_cast&amp;lt;uint32&amp;gt;(m_stADC[i]-&amp;gt;EDMA_ADC_Channel1), false);&lt;BR /&gt;#endif /*AUTONOM*/&lt;/P&gt;&lt;P&gt;#ifdef DMA_INTERRUPT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_STCDSetBasicTransfer(m_stADC[i]-&amp;gt;EDMA_Peripheral, &amp;amp;stcd[0], &amp;amp;m_configDMA[0], true, false);&lt;BR /&gt;#else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_STCDSetBasicTransfer(m_stADC[i]-&amp;gt;EDMA_Peripheral, &amp;amp;stcd[0], &amp;amp;m_configDMA[0], false, false);&lt;BR /&gt;#endif /*DMA_INTERRUPT*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_PushSTCDToHTCD(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel1, &amp;amp;stcd[0]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_SetDmaRequestCmd(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel1, true);&lt;/P&gt;&lt;P&gt;// ------------------------------------------------&lt;BR /&gt;// For transferring from SRAM to ADC_SC1A&lt;BR /&gt;// ------------------------------------------------&lt;/P&gt;&lt;P&gt;#ifdef AUTONOM /*automatic triggering of ADC conversions*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_ClearIntStatusFlag(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel2);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_ClearErrorIntStatusFlag(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* DMAMUX init */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_HAL_SetChannelCmd(m_stADC[i]-&amp;gt;DMAMUX_Peripheral, static_cast&amp;lt;uint32&amp;gt;(m_stADC[i]-&amp;gt;EDMA_ADC_Channel2), false);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_HAL_SetChannelCmd(m_stADC[i]-&amp;gt;DMAMUX_Peripheral, static_cast&amp;lt;uint32&amp;gt;(m_stADC[i]-&amp;gt;EDMA_ADC_Channel2), true);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8 channel2Scan = ADC_Channel_NTC_IN;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (1 == i)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; channel2Scan = SECOND_ADC_FIRST_CHANNEL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Configure ADC DMA */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].srcAddr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = reinterpret_cast&amp;lt;uint32_t&amp;gt;(&amp;amp;m_stChannels-&amp;gt;channels[channel2Scan]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].destAddr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = reinterpret_cast&amp;lt;uint32_t&amp;gt;(&amp;amp;m_stADC[i]-&amp;gt;base-&amp;gt;SC1[0]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].srcTransferSize&amp;nbsp;&amp;nbsp;&amp;nbsp; = kEDMATransferSize_1Bytes;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].destTransferSize&amp;nbsp;&amp;nbsp; = kEDMATransferSize_1Bytes;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].srcOffset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x01;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].destOffset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x00;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].srcLastAddrAdjust&amp;nbsp; = static_cast&amp;lt;uint32_t&amp;gt;(-3);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].destLastAddrAdjust = 0x00;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].srcModulo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = kEDMAModuloDisable;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].destModulo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = kEDMAModuloDisable;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].minorLoopCount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1U;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_configDMA[1].majorLoopCount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 3U;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Links the second DMA Channel to the TCD of the first DMA Channel */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_STCDSetChannelMinorLink(&amp;amp;stcd[1], static_cast&amp;lt;uint32&amp;gt;(m_stADC[i]-&amp;gt;EDMA_ADC_Channel2), false);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_STCDSetBasicTransfer(m_stADC[i]-&amp;gt;EDMA_Peripheral, &amp;amp;stcd[1], &amp;amp;m_configDMA[1], true, false);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_PushSTCDToHTCD(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel2, &amp;amp;stcd[1]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_SetDmaRequestCmd(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel2, true);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_HAL_TriggerChannelStart(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel2);&lt;BR /&gt;// EDMA_HAL_SetChannelPriority(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel1, m_stADC[i]-&amp;gt;EDMA_CH1_Priortity);&lt;BR /&gt;// EDMA_HAL_SetChannelPriority(m_stADC[i]-&amp;gt;EDMA_Peripheral, m_stADC[i]-&amp;gt;EDMA_ADC_Channel2, m_stADC[i]-&amp;gt;EDMA_CH2_Priortity);&lt;/P&gt;&lt;P&gt;#endif /*AUTONOM*/&lt;/P&gt;&lt;P&gt;#ifdef DMA_INTERRUPT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize EDMA interrupts */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_ClearPendingIRQ(m_stADC[i]-&amp;gt;EDMA_ADCIRQn);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_SetPriority(m_stADC[i]-&amp;gt;EDMA_ADCIRQn, m_stADC[i]-&amp;gt;EDMA_IRQPriority);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(m_stADC[i]-&amp;gt;EDMA_ADCIRQn);&lt;BR /&gt;#endif /*DMA_INTERRUPT*/&lt;/P&gt;&lt;P&gt;#else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Initialize ADC interrupts */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_ClearPendingIRQ(m_stADC[i]-&amp;gt;ADC_IRQn);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_SetPriority(m_stADC[i]-&amp;gt;ADC_IRQn, m_stADC[i]-&amp;gt;ADC_IRQPriority);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(m_stADC[i]-&amp;gt;ADC_IRQn);&lt;BR /&gt;#endif /*WITH_DMA*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ###########################################################################&lt;/P&gt;&lt;P&gt;#if HARDWARE_TRIGGER&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Timer Configuration to generate trigger for ADC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOCK_SYS_EnableFtmClock(m_stADC[0]-&amp;gt;FTM_Instance);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;/* Use FTM mode */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;FTM_HAL_Enable(m_stADC[0]-&amp;gt;FTM_base, true);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;// Set prescaler to 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;FTM_HAL_SetClockPs(m_stADC[0]-&amp;gt;FTM_base, kFtmDividedBy1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Configure outputs&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetWriteProtectionCmd(m_stADC[0]-&amp;gt;FTM_base, false);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetClockSource(m_stADC[0]-&amp;gt;FTM_base, kClock_source_FTM_None);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set FTM external trigger&lt;BR /&gt;&amp;nbsp;&amp;nbsp;FTM_HAL_SetInitTriggerCmd(m_stADC[0]-&amp;gt;FTM_base, true);&lt;/P&gt;&lt;P&gt;#if WITH_FTM_INTERRUPT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Configure and enable FTM overflow interrupt&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(m_stADC[0]-&amp;gt;FTM_OverflowIrq);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Enable interrupt on counter overflow&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_EnableTimerOverflowInt(m_stADC[0]-&amp;gt;FTM_base);&lt;BR /&gt;#else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;SIM_HAL_SetAdcTriggerModeOneStep(SIM, i, true, kSimAdcPretrgselA, kSimAdcTrgSelFtm2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;EN_ADC_CHANNELS channel;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (1 == i)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; channel = ADC_Channel_PHOTO2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; channel = ADC_Channel_PHOTO1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setADCTriggerInput(channel, true);&lt;/P&gt;&lt;P&gt;#endif&lt;BR /&gt;#endif&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ###########################################################################&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/*------------------------------------------------------------------------*/ /**&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Configures Timer to the new on Time&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If on_time_us is 0 then no timer will be started&lt;BR /&gt;*/&amp;nbsp; //---------------------------------------------------------------------------&lt;BR /&gt;void CADC_MK24FN1M0::setTriggerInterval(const uint16 triggerInterval_us)&lt;BR /&gt;{&lt;BR /&gt;#if HARDWARE_TRIGGER&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; m_trigTime_us = triggerInterval_us;&lt;/P&gt;&lt;P&gt;&amp;nbsp;const uint64 fmtClockFrequency = SystemCoreClock;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; const uint8 prescaler = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;m_clocksforTImer = static_cast&amp;lt;uint16&amp;gt;( HZ_TO_MHZ( (fmtClockFrequency / prescaler) * m_trigTime_us) );&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetMod(m_stADC[0]-&amp;gt;FTM_base, m_clocksforTImer);&lt;BR /&gt;#endif&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;/*------------------------------------------------------------------------*/ /**&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sets the trigger for m_trigTime_us to high to start the ADC conversion&lt;BR /&gt;*/&amp;nbsp; //---------------------------------------------------------------------------&lt;BR /&gt;void CADC_MK24FN1M0::startTrigger()&lt;BR /&gt;{&lt;BR /&gt;#if HARDWARE_TRIGGER&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m_trigTime_us != 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;BR /&gt;#if TEST_TOGGLE_PIN&lt;BR /&gt;&amp;nbsp;&amp;nbsp;g_testToggleFlag = false;&lt;BR /&gt;#endif&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetCounterInitVal(m_stADC[0]-&amp;gt;FTM_base, 0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetWriteProtectionCmd(m_stADC[0]-&amp;gt;FTM_base, false);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_ClearTimerOverflow(m_stADC[0]-&amp;gt;FTM_base);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetClockSource(m_stADC[0]-&amp;gt;FTM_base, kClock_source_FTM_SystemClk);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;#else&lt;BR /&gt;&amp;nbsp;setADCTriggerInput(IADC::ADC_Channel_PHOTO1, true);&lt;BR /&gt;&amp;nbsp;setADCTriggerInput(IADC::ADC_Channel_PHOTO2, true );&lt;BR /&gt;#endif&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void CADC_MK24FN1M0::stopTrigger()&lt;BR /&gt;{&amp;nbsp;&lt;BR /&gt;#if HARDWARE_TRIGGER&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_ClearTimerOverflow(m_stADC[0]-&amp;gt;FTM_base);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetWriteProtectionCmd(m_stADC[0]-&amp;gt;FTM_base, false);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_HAL_SetClockSource(m_stADC[0]-&amp;gt;FTM_base, kClock_source_FTM_None);&lt;BR /&gt;#else&lt;BR /&gt;&amp;nbsp;setADCTriggerInput(IADC::ADC_Channel_PHOTO1, false);&lt;BR /&gt;&amp;nbsp;setADCTriggerInput(IADC::ADC_Channel_PHOTO2, false);&lt;BR /&gt;#endif&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*------------------------------------------------------------------------*/ /**&lt;BR /&gt;* \brief&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; irq Handler routine for the ADC IRQ&lt;BR /&gt;* \param[in]&amp;nbsp;&amp;nbsp;&amp;nbsp; any one of the "EN_ADC_CHANNELS"&lt;BR /&gt;* \return&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; none&lt;BR /&gt;*/&amp;nbsp; //---------------------------------------------------------------------------&lt;BR /&gt;void CADC_MK24FN1M0::irqADC(uint32 adcInstance)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;static uint16 measureCount[NUMBER_OF_INSTANCES] = { 0 , 0 };&lt;BR /&gt;&amp;nbsp;uint8 channelNumber = ( static_cast&amp;lt;uint8&amp;gt;(m_stADC[adcInstance]-&amp;gt;base-&amp;gt;SC1[0]) &amp;amp; 0x1F );&lt;/P&gt;&lt;P&gt;&amp;nbsp;GPIO_HAL_WritePinOutput(PTA, 14, 1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;EN_ADC_CHANNELS channel2Scan = getADCChannel2Scan(adcInstance, channelNumber);&lt;/P&gt;&lt;P&gt;&amp;nbsp;m_stDMA_Collect[channel2Scan] = ADC16_HAL_GetChnConvValue(m_stADC[adcInstance]-&amp;gt;base, 0);&lt;/P&gt;&lt;P&gt;#if AVERAGING_HARDWARE&lt;BR /&gt;&amp;nbsp;m_ADCConversionFinish[channel2Scan] = true;&lt;BR /&gt;#else&amp;nbsp;&lt;BR /&gt;&amp;nbsp;m_ADC_Measurements[adcInstance] += m_stDMA_Collect[channel2Scan];&lt;/P&gt;&lt;P&gt;&amp;nbsp;if (MAX_ADC_MEASUREMENTS &amp;lt;= ++measureCount[adcInstance])&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;GPIO_HAL_WritePinOutput(PTB, 16, 1);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;m_AverageADC[adcInstance] = static_cast&amp;lt;uint16&amp;gt;(m_ADC_Measurements[adcInstance] / MAX_ADC_MEASUREMENTS);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;measureCount[adcInstance] = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;m_ADCConversionFinish[channel2Scan] = true;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;GPIO_HAL_WritePinOutput(PTB, 16, 0);&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;&amp;nbsp;GPIO_HAL_WritePinOutput(PTA, 14, 0);&lt;/P&gt;&lt;P&gt;#if 0&lt;BR /&gt;&amp;nbsp;if (adcInstance)&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;setADCTriggerInput(IADC::ADC_Channel_PHOTO1, true);&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;else&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;setADCTriggerInput(IADC::ADC_Channel_PHOTO2, true);&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;#endif&amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// ##############################################################################################&lt;/P&gt;&lt;P&gt;in ADC.h file the following Struct is declared.&lt;/P&gt;&lt;P&gt;// ##############################################################################################&lt;/P&gt;&lt;P&gt;struct STADCHardware&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_Type * FTM_base;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32 FTM_Instance;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRQn_Type FTM_OverflowIrq;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC_Type * base;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32 instances;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adc16_chn_t chnIdx;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adc16_chn_mux_mode_t adcMuxChannel;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRQn_Type ADC_IRQn;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ channel ADC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8 ADC_IRQPriority;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ preemption priority&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_Type * DMAMUX_Peripheral;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // DMAMUX peripheral&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32 DMAMUX_Instance;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // DMAMUX instance&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dma_request_source_t DMAMUX_ADC_Source;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Source configuration for ADC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA_Type * EDMA_Peripheral;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // DMA peripheral&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32 EDMA_Instance;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // instance in library(eg. 0 = DMA0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edma_channel_indicator_t EDMA_ADC_Channel1;&amp;nbsp; // DMA ADC channel&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edma_channel_indicator_t EDMA_ADC_Channel2;&amp;nbsp; // DMA ADC channel&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IRQn_Type EDMA_ADCIRQn;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ channel DMA ADC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8 EDMA_IRQPriority;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ preemption priority&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edma_channel_priority_t EDMA_CH1_Priortity;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edma_channel_priority_t EDMA_CH2_Priortity;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;// ##############################################################################################&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// ##############################################################################################&lt;/P&gt;&lt;P&gt;in my Config.h file the following ADC configurations&amp;nbsp;are used&lt;/P&gt;&lt;P&gt;// ##############################################################################################&lt;/P&gt;&lt;P&gt;#if 1&lt;BR /&gt;static const CADC_MK24FN1M0::STADCHardware stADC1 = {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM3,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // FTM_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *base;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // uint32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_Instance;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM3_IRQn,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQn_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_OverflowIrq;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ADC_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *base;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // instances&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC_Instance&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kAdc16Chn1d,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // adc16_chn_t&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kAdc16ChnMuxOfA,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // All Channels use multiplexer setting b&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC1_IRQn,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ channel ADC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ preemption priority&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // DMAMUX_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *DMAMUX_Peripheral;// DMAMUX peripheral&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // uint32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_Instance;&amp;nbsp;&amp;nbsp; // DMAMUX instance&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kDmaRequestMux0ADC1,&amp;nbsp; // dma_request_source_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_ADC_Source; // Source configuration for ADC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // DMA_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *EDMA_Peripheral;&amp;nbsp; // DMA peripheral&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // uint32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_Instance;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // instance in library(eg. 0 = DMA0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kEDMAChannel10,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // edma_channel_indicator_t EDMA_ADC_Channel;&amp;nbsp; // DMA&amp;nbsp; channel&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kEDMAChannel11,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA10_IRQn,&amp;nbsp; // IRQn_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_ADCIRQn;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ DMA ADC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ preemption Priority&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kEDMAChnPriority11,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kEDMAChnPriority10};&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;#if 1&lt;BR /&gt;static const CADC_MK24FN1M0::STADCHardware stADC0 = {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM2,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // FTM_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *base;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // uint32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_Instance;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM2_IRQn,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQn_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTM_OverflowIrq;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // ADC_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *base;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // instances&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC_Instance&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kAdc16Chn1d,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // adc16_chn_t&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kAdc16ChnMuxOfA,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // All Channels use multiplexer setting b&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADC0_IRQn,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ channel ADC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ preemption Priority&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // DMAMUX_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *DMAMUX_Peripheral;// DMAMUX peripheral&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // uint32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_Instance;&amp;nbsp;&amp;nbsp; // DMAMUX instance&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kDmaRequestMux0ADC0,&amp;nbsp; // dma_request_source_t&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMAMUX_ADC_Source; // Source configuration for ADC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // DMA_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *EDMA_Peripheral;&amp;nbsp; // DMA peripheral&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // uint32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_Instance;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // instance in library(eg. 0 = DMA0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kEDMAChannel12,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // edma_channel_indicator_t EDMA_ADC_Channel;&amp;nbsp; // DMA channel&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kEDMAChannel13,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DMA12_IRQn,&amp;nbsp; // IRQn_Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EDMA_ADCIRQn;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ DMA ADC&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // IRQ preemption Priority&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kEDMAChnPriority13,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kEDMAChnPriority12};&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;// ##############################################################################################&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hoping to get some help in the right direction!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks and have a nice day!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Sep 2018 09:31:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793435#M48268</guid>
      <dc:creator>vinay_devarakon</dc:creator>
      <dc:date>2018-09-07T09:31:49Z</dc:date>
    </item>
    <item>
      <title>Re: ADC hardware average with Timer trigger not counting all samples</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793436#M48269</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Kerry,&lt;/P&gt;&lt;P&gt;I have recalculated my ADC conversion time for 32 Hardware averaging counts and it is Correct what I measure. It is 165.93 µs.&lt;/P&gt;&lt;P&gt;That works good. The Continuous mode seems to also work on both the ADCs parallely.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thankyou!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Sep 2018 09:38:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793436#M48269</guid>
      <dc:creator>vinay_devarakon</dc:creator>
      <dc:date>2018-09-12T09:38:14Z</dc:date>
    </item>
    <item>
      <title>Re: ADC hardware average with Timer trigger not counting all samples</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793437#M48270</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Vinay,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks a lot for your updated information.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; So, your previous problem still caused by the wrong calculated ADC conversion time, is it right?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Any way, if you still have question about it, please kindly let me know.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;kerry&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Sep 2018 03:02:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793437#M48270</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2018-09-13T03:02:31Z</dc:date>
    </item>
    <item>
      <title>Re: ADC hardware average with Timer trigger not counting all samples</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793438#M48271</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kerry,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks to you too for your Support. Actually, the Problem is not completely cleared. My Goal was to sample both the ADCs with a single Hardware Timer as Trigger Input and compute 32 consecutive such measurements (&amp;nbsp;which with the corrected ADC conversion time of 5.77µs for one measurement should be at 32 * 5.77µs = 184,64µs&amp;nbsp;) and take an average for the 32 measurements. So, instead of me doing all the measurements and taking an average, I found the Hardware Averaging Feature quite apt for my requirement. But, as I stated before I&amp;nbsp;always get my Interrupt&amp;nbsp;only after170µs which makes me understand that Hardware Trigger and Hardware averaging are not to be used together??&amp;nbsp;&lt;/P&gt;&lt;P&gt;This makes me understand that the Hardware averaging Feature is meant only for Continuous conversions and it does not depend on the Timer Trigger Input.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am really interested to know what exactly is actually meant with Hardware Averaging Count ?? and whether it is Independent of Hardware Trigger?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thankyou once again!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Sep 2018 08:29:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793438#M48271</guid>
      <dc:creator>vinay_devarakon</dc:creator>
      <dc:date>2018-09-13T08:29:27Z</dc:date>
    </item>
    <item>
      <title>Re: ADC hardware average with Timer trigger not counting all samples</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793439#M48272</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Vinay Kumar,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thanks&amp;nbsp; for your updated information.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hardware conversion is not only in continuous mode, please check these information:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/69167iFFF53E31D33F6181/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/69197iFC4C5C1AFF0C0DE7/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_2.png" alt="pastedImage_2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;So, actually, you totally can use the hardware trigger, if you trigger one time, and you enable the hardware average function, then one set of conversion will be converted.&lt;/P&gt;&lt;P&gt;But please note, you must make sure your hardware trigger intervals larger than the hardware average conversion time.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps you!&lt;/P&gt;&lt;P&gt;If you still have question about it, please kindly let me know.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Kerry&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 14 Sep 2018 06:01:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793439#M48272</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2018-09-14T06:01:13Z</dc:date>
    </item>
    <item>
      <title>Re: ADC hardware average with Timer trigger not counting all samples</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793440#M48273</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use of average function may lead user into assumption that it works with HW triggers differently than in continuous mode. It works as Kerry explained and this block diagram describes that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/90777iDF459F34D0AF2343/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_2.png" alt="pastedImage_2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 10 Jul 2019 07:12:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ADC-hardware-average-with-Timer-trigger-not-counting-all-samples/m-p/793440#M48273</guid>
      <dc:creator>lukas_osmancik</dc:creator>
      <dc:date>2019-07-10T07:12:35Z</dc:date>
    </item>
  </channel>
</rss>

