<?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>LPC MicrocontrollersのトピックRe: ADC interrupt is not triggering</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1320645#M46109</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;This is my suggestion, firstly, you use software triggering mode to start ADC sampling with interrupt mode. After software triggering is okay, then you use SCT_OUT7 to trigger ADC.&lt;/P&gt;
&lt;P&gt;I have tried to use LPC54114 and use SCT to trigger ADC, pls refer to the code:&lt;/P&gt;
&lt;P&gt;Because the ADC triggering source is different between 54114 and 54606, pls note it.&lt;/P&gt;
&lt;P&gt;Hope it can help you&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun Rong&lt;/P&gt;
&lt;P&gt;//PIO0_7 SCT0_OUT0(Func_2)&lt;BR /&gt;//PIO0_8 SCT0_OUT1(Func_2)&lt;BR /&gt;//PIO0_9 SCT0_OUT2(Func_2)&lt;BR /&gt;//PIO0_10 SCT0_OUT3(Func_2)&lt;BR /&gt;//use SCT0_OUT7 signal to trigger ADC&lt;BR /&gt;void ADC_Init_HardWareTrigger_DMA(void)&lt;BR /&gt;{&lt;BR /&gt;//power-on ADC&lt;BR /&gt;//SYSCON-&amp;gt;PDRUNCFGCLR[0]=1&amp;lt;&amp;lt;10;&lt;BR /&gt;//enable ADC clock&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRLSET[0]=1&amp;lt;&amp;lt;27|1&amp;lt;&amp;lt;13; //enable both IOCON and ADC0&lt;/P&gt;
&lt;P&gt;//ADC prereset&lt;BR /&gt;//select ADC clock, main clock is selected as ADC clock&lt;BR /&gt;SYSCON-&amp;gt;ADCCLKSEL=0x00;;&lt;BR /&gt;SYSCON-&amp;gt;ADCCLKDIV=0x01;&lt;BR /&gt;//SYSCON-&amp;gt;PRESETCTRLSET[0]|=0x1&amp;lt;&amp;lt;27; //set ADC0_RST&lt;BR /&gt;asm("nop");&lt;BR /&gt;asm("nop");&lt;BR /&gt;asm("nop");&lt;BR /&gt;//SYSCON-&amp;gt;PRESETCTRLCLR[0]=0x01&amp;lt;&amp;lt;27; //set ADC0_RST&lt;BR /&gt;Delay_mSec(2);&lt;BR /&gt;ADC0-&amp;gt;STARTUP|=0x01;&lt;BR /&gt;Delay_mSec(2);&lt;BR /&gt;ADC0-&amp;gt;STARTUP|=0x01&amp;lt;&amp;lt;1;&lt;/P&gt;
&lt;P&gt;//ADC pin is selected, PIO1_0/ADC0_3&lt;BR /&gt;IOCON-&amp;gt;PIO[1][0]=0x00;&lt;/P&gt;
&lt;P&gt;//set up ADC register&lt;BR /&gt;ADC0-&amp;gt;CTRL=0x3F00; //12 bit resolution, synchronous mode, bypass calibration&lt;BR /&gt;ADC0-&amp;gt;INSEL=0x00; //select ADC input channel&lt;BR /&gt;//hardware triggering mode, trigger source SCT0_OUT7, positive edge, bypass mode&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]|=1&amp;lt;&amp;lt;3|2&amp;lt;&amp;lt;12|0x0C&amp;lt;&amp;lt;16|1&amp;lt;&amp;lt;30; //|1&amp;lt;&amp;lt;30;&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]|=1&amp;lt;&amp;lt;31; //enable sequence A&lt;BR /&gt;//software trigger ADC&lt;BR /&gt;// ADC0-&amp;gt;SEQ_CTRL[0]|=1&amp;lt;&amp;lt;26;&lt;BR /&gt;//poll ADC status reg and read ADC sample&lt;BR /&gt;for(;;)&lt;BR /&gt;{&lt;BR /&gt;//ADC_conversion_hardware();&lt;BR /&gt;//if interrupt mode is enabled, just use nop&lt;BR /&gt;__asm("nop");&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;void PWMInit(void)&lt;BR /&gt;{&lt;BR /&gt;//enable PWM module clock&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRLSET[0]=1&amp;lt;&amp;lt;20|1&amp;lt;&amp;lt;13; //enable both IOCON and DMA&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRLSET[1]=1&amp;lt;&amp;lt;2; //enable both IOCON and ADC0&lt;BR /&gt;//initialize the PWM module pins&lt;BR /&gt;IOCON-&amp;gt;PIO[0][7]=0x82;&lt;BR /&gt;IOCON-&amp;gt;PIO[0][8]=0x82;&lt;BR /&gt;IOCON-&amp;gt;PIO[0][9]=0x82;&lt;BR /&gt;IOCON-&amp;gt;PIO[0][10]=0x82;&lt;/P&gt;
&lt;P&gt;//select PWM clock source&lt;BR /&gt;SCT0-&amp;gt;CONFIG |= 1; // unified timer&lt;BR /&gt;SCT0-&amp;gt;SCTMATCHREL[0] = (SystemCoreClock/10)-1; // match 0 @ 10 Hz = 100 msec&lt;BR /&gt;SCT0-&amp;gt;SCTMATCHREL[1] = ((SystemCoreClock/10)/4)-1; // match 0 @ 10 Hz = 100 msec&lt;BR /&gt;SCT0-&amp;gt;SCTMATCHREL[2] = ((SystemCoreClock/10)/2)-1; // match 0 @ 10 Hz = 100 msec&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;EVENT[0].STATE = 0xFFFFFFFF; // event0 happen in all state&lt;BR /&gt;SCT0-&amp;gt;EVENT[0].CTRL = (0 &amp;lt;&amp;lt; 0) | (1 &amp;lt;&amp;lt; 12);&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;EVENT[1].STATE = 0xFFFFFFFF; // event1 happen in all state&lt;BR /&gt;SCT0-&amp;gt;EVENT[1].CTRL = (1 &amp;lt;&amp;lt; 0) | (1 &amp;lt;&amp;lt; 12);&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;EVENT[2].STATE = 0xFFFFFFFF; // event2 happen in all state&lt;BR /&gt;SCT0-&amp;gt;EVENT[2].CTRL = (2 &amp;lt;&amp;lt; 0) | (1 &amp;lt;&amp;lt; 12);&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;OUT[0].SET = (1 &amp;lt;&amp;lt; 1); // event 1 will set SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;OUT[0].CLR = (1 &amp;lt;&amp;lt; 2); // event 2 will clear SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;OUT[7].SET = (1 &amp;lt;&amp;lt; 1); // event 1 will set SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;OUT[7].CLR = (1 &amp;lt;&amp;lt; 2); // event 2 will clear SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;LIMIT = 0x0001; // events 0 and 1 are used as counter limit&lt;BR /&gt;SCT0-&amp;gt;CTRL &amp;amp;= ~(1 &amp;lt;&amp;lt; 2); // unhalt by clearing bit 2 of CTRL register&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;</description>
    <pubDate>Wed, 11 Aug 2021 05:37:47 GMT</pubDate>
    <dc:creator>xiangjun_rong</dc:creator>
    <dc:date>2021-08-11T05:37:47Z</dc:date>
    <item>
      <title>ADC interrupt is not triggering</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1320326#M46107</link>
      <description>&lt;P&gt;In LPC54606 I used ADC0 seqA&amp;nbsp; with Following Code But Interrupt is not occured atleast once.&lt;/P&gt;&lt;P&gt;void ADC0_init(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;SYSCON-&amp;gt;PDRUNCFG[0] &amp;amp;=~(1&amp;lt;&amp;lt;9|1&amp;lt;&amp;lt;10|1&amp;lt;&amp;lt;19|1&amp;lt;&amp;lt;23); //ADC Powered&lt;BR /&gt;SYSCON-&amp;gt;PDRUNCFG[1] &amp;amp;=~(1&amp;lt;&amp;lt;3);&lt;BR /&gt;DelayMs(25); //Least of 20Microsec delay before enabling clock to ADC&lt;BR /&gt;&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRL[0] |= (1 &amp;lt;&amp;lt; 27); // Clock to ADC0&lt;BR /&gt;SYSCON-&amp;gt;PRESETCTRL[0] &amp;amp;=~(1 &amp;lt;&amp;lt; 27); //Clear Reset to ADC0&lt;BR /&gt;&lt;BR /&gt;ADC0-&amp;gt;CTRL |=(1&amp;lt;&amp;lt;0)|(1&amp;lt;&amp;lt;2); //ADC clock as 30MHZ&lt;/P&gt;&lt;P&gt;ADC0-&amp;gt;SEQ_CTRL[0] |=1&amp;lt;&amp;lt;28 ; //mode as single step&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0] &amp;amp;=~(1&amp;lt;&amp;lt;30) ; //mode as end of conversion&lt;/P&gt;&lt;P&gt;vDisable_adc_fun(); //Disable all ADC chnls to avoid error&lt;BR /&gt;&lt;BR /&gt;IOCON-&amp;gt;PIO[0][ADCPinno[Chnlno]]&amp;amp;=~(1&amp;lt;&amp;lt;8); //Analog mode enable chnl by chnl&lt;/P&gt;&lt;P&gt;ADC0-&amp;gt;FLAGS = ADC0-&amp;gt;FLAGS ; //Clear all pending interrupts&lt;BR /&gt;ADC0-&amp;gt;INTEN = 0x01&amp;lt;&amp;lt;0;&lt;BR /&gt;NVIC_SetPriority(ADC0_SEQA_IRQn,3);&lt;BR /&gt;NVIC_EnableIRQ(ADC0_SEQA_IRQn);&lt;BR /&gt;&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]&amp;amp;=(~(1UL &amp;lt;&amp;lt; 31));&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]&amp;amp;= ~(0xFFF);&lt;BR /&gt;// ADC0-&amp;gt;SEQ_CTRL[0]|=1&amp;lt;&amp;lt;12|1&amp;lt;&amp;lt;13; //ADC trigger by SCT_OUT4&lt;BR /&gt;// ADC0-&amp;gt;SEQ_CTRL[0]|= (1 &amp;lt;&amp;lt; 18); //HW trigger polarity - positive edge&lt;/P&gt;&lt;P&gt;ADC0-&amp;gt;SEQ_CTRL[0]|=(0x01&amp;lt;&amp;lt;(ADCChnlno[Chnlno])); //Enable ADC chnl bit&lt;BR /&gt;&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0] |=0x08000000;&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]|= (1UL &amp;lt;&amp;lt; 31); //Enable Sequence&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void ADC0_SEQA_IRQHandler()&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;//body of code&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&amp;amp;Regards&lt;/P&gt;&lt;P&gt;Nandini&lt;/P&gt;</description>
      <pubDate>Mon, 09 Aug 2021 12:23:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1320326#M46107</guid>
      <dc:creator>Nandini_19</dc:creator>
      <dc:date>2021-08-09T12:23:29Z</dc:date>
    </item>
    <item>
      <title>Re: ADC interrupt is not triggering</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1320645#M46109</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;This is my suggestion, firstly, you use software triggering mode to start ADC sampling with interrupt mode. After software triggering is okay, then you use SCT_OUT7 to trigger ADC.&lt;/P&gt;
&lt;P&gt;I have tried to use LPC54114 and use SCT to trigger ADC, pls refer to the code:&lt;/P&gt;
&lt;P&gt;Because the ADC triggering source is different between 54114 and 54606, pls note it.&lt;/P&gt;
&lt;P&gt;Hope it can help you&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun Rong&lt;/P&gt;
&lt;P&gt;//PIO0_7 SCT0_OUT0(Func_2)&lt;BR /&gt;//PIO0_8 SCT0_OUT1(Func_2)&lt;BR /&gt;//PIO0_9 SCT0_OUT2(Func_2)&lt;BR /&gt;//PIO0_10 SCT0_OUT3(Func_2)&lt;BR /&gt;//use SCT0_OUT7 signal to trigger ADC&lt;BR /&gt;void ADC_Init_HardWareTrigger_DMA(void)&lt;BR /&gt;{&lt;BR /&gt;//power-on ADC&lt;BR /&gt;//SYSCON-&amp;gt;PDRUNCFGCLR[0]=1&amp;lt;&amp;lt;10;&lt;BR /&gt;//enable ADC clock&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRLSET[0]=1&amp;lt;&amp;lt;27|1&amp;lt;&amp;lt;13; //enable both IOCON and ADC0&lt;/P&gt;
&lt;P&gt;//ADC prereset&lt;BR /&gt;//select ADC clock, main clock is selected as ADC clock&lt;BR /&gt;SYSCON-&amp;gt;ADCCLKSEL=0x00;;&lt;BR /&gt;SYSCON-&amp;gt;ADCCLKDIV=0x01;&lt;BR /&gt;//SYSCON-&amp;gt;PRESETCTRLSET[0]|=0x1&amp;lt;&amp;lt;27; //set ADC0_RST&lt;BR /&gt;asm("nop");&lt;BR /&gt;asm("nop");&lt;BR /&gt;asm("nop");&lt;BR /&gt;//SYSCON-&amp;gt;PRESETCTRLCLR[0]=0x01&amp;lt;&amp;lt;27; //set ADC0_RST&lt;BR /&gt;Delay_mSec(2);&lt;BR /&gt;ADC0-&amp;gt;STARTUP|=0x01;&lt;BR /&gt;Delay_mSec(2);&lt;BR /&gt;ADC0-&amp;gt;STARTUP|=0x01&amp;lt;&amp;lt;1;&lt;/P&gt;
&lt;P&gt;//ADC pin is selected, PIO1_0/ADC0_3&lt;BR /&gt;IOCON-&amp;gt;PIO[1][0]=0x00;&lt;/P&gt;
&lt;P&gt;//set up ADC register&lt;BR /&gt;ADC0-&amp;gt;CTRL=0x3F00; //12 bit resolution, synchronous mode, bypass calibration&lt;BR /&gt;ADC0-&amp;gt;INSEL=0x00; //select ADC input channel&lt;BR /&gt;//hardware triggering mode, trigger source SCT0_OUT7, positive edge, bypass mode&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]|=1&amp;lt;&amp;lt;3|2&amp;lt;&amp;lt;12|0x0C&amp;lt;&amp;lt;16|1&amp;lt;&amp;lt;30; //|1&amp;lt;&amp;lt;30;&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]|=1&amp;lt;&amp;lt;31; //enable sequence A&lt;BR /&gt;//software trigger ADC&lt;BR /&gt;// ADC0-&amp;gt;SEQ_CTRL[0]|=1&amp;lt;&amp;lt;26;&lt;BR /&gt;//poll ADC status reg and read ADC sample&lt;BR /&gt;for(;;)&lt;BR /&gt;{&lt;BR /&gt;//ADC_conversion_hardware();&lt;BR /&gt;//if interrupt mode is enabled, just use nop&lt;BR /&gt;__asm("nop");&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;void PWMInit(void)&lt;BR /&gt;{&lt;BR /&gt;//enable PWM module clock&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRLSET[0]=1&amp;lt;&amp;lt;20|1&amp;lt;&amp;lt;13; //enable both IOCON and DMA&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRLSET[1]=1&amp;lt;&amp;lt;2; //enable both IOCON and ADC0&lt;BR /&gt;//initialize the PWM module pins&lt;BR /&gt;IOCON-&amp;gt;PIO[0][7]=0x82;&lt;BR /&gt;IOCON-&amp;gt;PIO[0][8]=0x82;&lt;BR /&gt;IOCON-&amp;gt;PIO[0][9]=0x82;&lt;BR /&gt;IOCON-&amp;gt;PIO[0][10]=0x82;&lt;/P&gt;
&lt;P&gt;//select PWM clock source&lt;BR /&gt;SCT0-&amp;gt;CONFIG |= 1; // unified timer&lt;BR /&gt;SCT0-&amp;gt;SCTMATCHREL[0] = (SystemCoreClock/10)-1; // match 0 @ 10 Hz = 100 msec&lt;BR /&gt;SCT0-&amp;gt;SCTMATCHREL[1] = ((SystemCoreClock/10)/4)-1; // match 0 @ 10 Hz = 100 msec&lt;BR /&gt;SCT0-&amp;gt;SCTMATCHREL[2] = ((SystemCoreClock/10)/2)-1; // match 0 @ 10 Hz = 100 msec&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;EVENT[0].STATE = 0xFFFFFFFF; // event0 happen in all state&lt;BR /&gt;SCT0-&amp;gt;EVENT[0].CTRL = (0 &amp;lt;&amp;lt; 0) | (1 &amp;lt;&amp;lt; 12);&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;EVENT[1].STATE = 0xFFFFFFFF; // event1 happen in all state&lt;BR /&gt;SCT0-&amp;gt;EVENT[1].CTRL = (1 &amp;lt;&amp;lt; 0) | (1 &amp;lt;&amp;lt; 12);&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;EVENT[2].STATE = 0xFFFFFFFF; // event2 happen in all state&lt;BR /&gt;SCT0-&amp;gt;EVENT[2].CTRL = (2 &amp;lt;&amp;lt; 0) | (1 &amp;lt;&amp;lt; 12);&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;OUT[0].SET = (1 &amp;lt;&amp;lt; 1); // event 1 will set SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;OUT[0].CLR = (1 &amp;lt;&amp;lt; 2); // event 2 will clear SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;OUT[7].SET = (1 &amp;lt;&amp;lt; 1); // event 1 will set SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;OUT[7].CLR = (1 &amp;lt;&amp;lt; 2); // event 2 will clear SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;LIMIT = 0x0001; // events 0 and 1 are used as counter limit&lt;BR /&gt;SCT0-&amp;gt;CTRL &amp;amp;= ~(1 &amp;lt;&amp;lt; 2); // unhalt by clearing bit 2 of CTRL register&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;</description>
      <pubDate>Wed, 11 Aug 2021 05:37:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1320645#M46109</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2021-08-11T05:37:47Z</dc:date>
    </item>
    <item>
      <title>Re: ADC interrupt is not triggering</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1320745#M46112</link>
      <description>&lt;P&gt;Yes i tried with Software triggering Put it in Burst mode&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But Same Result Interrupt is not occurring and Conversion Complete bit never set to 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&amp;amp;Regards&lt;/P&gt;&lt;P&gt;Nandini&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 10 Aug 2021 03:52:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1320745#M46112</guid>
      <dc:creator>Nandini_19</dc:creator>
      <dc:date>2021-08-10T03:52:52Z</dc:date>
    </item>
    <item>
      <title>Re: ADC interrupt is not triggering</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1320778#M46113</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I do not see the software triggering code, pls try to use the line to start ADC:&lt;/P&gt;
&lt;P&gt;ADC0-&amp;gt;SEQ_CTRL[0] |=1&amp;lt;&amp;lt;26;&lt;/P&gt;
&lt;P&gt;BTW， pls refer to the code for the ADC initilization:&lt;/P&gt;
&lt;P&gt;unsigned int sample;&lt;BR /&gt;void ADC_Init_SoftWareTrigger(void)&lt;BR /&gt;{&lt;BR /&gt;//power-on ADC&lt;BR /&gt;//SYSCON-&amp;gt;PDRUNCFGCLR[0]=1&amp;lt;&amp;lt;10;&lt;BR /&gt;//enable ADC clock&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRLSET[0]=1&amp;lt;&amp;lt;27|1&amp;lt;&amp;lt;13; //enable both IOCON and ADC0&lt;BR /&gt;//ADC prereset&lt;BR /&gt;//select ADC clock, main clock is selected as ADC clock&lt;BR /&gt;SYSCON-&amp;gt;ADCCLKSEL=0x00;;&lt;BR /&gt;SYSCON-&amp;gt;ADCCLKDIV=0x01;&lt;BR /&gt;//SYSCON-&amp;gt;PRESETCTRLSET[0]|=0x1&amp;lt;&amp;lt;27; //set ADC0_RST&lt;BR /&gt;asm("nop");&lt;BR /&gt;asm("nop");&lt;BR /&gt;asm("nop");&lt;BR /&gt;//SYSCON-&amp;gt;PRESETCTRLCLR[0]=0x01&amp;lt;&amp;lt;27; //set ADC0_RST&lt;BR /&gt;Delay_mSec(2);&lt;BR /&gt;ADC0-&amp;gt;STARTUP|=0x01;&lt;BR /&gt;Delay_mSec(2);&lt;BR /&gt;ADC0-&amp;gt;STARTUP|=0x01&amp;lt;&amp;lt;1;&lt;/P&gt;
&lt;P&gt;//ADC pin is selected, PIO1_0/ADC0_3&lt;BR /&gt;IOCON-&amp;gt;PIO[1][0]=0x00;&lt;/P&gt;
&lt;P&gt;//set up ADC register&lt;BR /&gt;ADC0-&amp;gt;CTRL=0x3F00; //12 bit resolution, synchronous mode, bypass calibration&lt;BR /&gt;ADC0-&amp;gt;INSEL=0x00; //select ADC input channel&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]|=1&amp;lt;&amp;lt;3|1&amp;lt;&amp;lt;30; //|1&amp;lt;&amp;lt;30;&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]|=1&amp;lt;&amp;lt;31; //enable sequence A&lt;BR /&gt;//software trigger ADC&lt;BR /&gt;// ADC0-&amp;gt;SEQ_CTRL[0]|=1&amp;lt;&amp;lt;26;&lt;/P&gt;
&lt;P&gt;//poll ADC status reg and read ADC sample&lt;BR /&gt;for(;;)&lt;BR /&gt;{&lt;BR /&gt;ADC_conversion_software();&lt;BR /&gt;}&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;void ADC_conversion_software(void)&lt;BR /&gt;{&lt;BR /&gt;unsigned int temp;&lt;BR /&gt;//ADC0-&amp;gt;CTRL &amp;amp;= 0x00000000;&lt;BR /&gt;//ADC0-&amp;gt;SEQ_CTRL[0] |= (1&amp;lt;&amp;lt;ADC_3);&lt;BR /&gt;//Delay_mSec(10);&lt;BR /&gt;//temp=ADC0-&amp;gt;DAT[3];&lt;BR /&gt;//ADC0-&amp;gt;SEQ_CTRL[0] |= 0x80040000;&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]|=1&amp;lt;&amp;lt;26;&lt;BR /&gt;while(!(ADC0-&amp;gt;DAT[3]&amp;amp;(0x80000000))) {}&lt;BR /&gt;sample=(ADC0-&amp;gt;DAT[3]&amp;amp;0xFFF0)&amp;gt;&amp;gt;4;&lt;BR /&gt;//asm("nop");&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun Rong&lt;/P&gt;</description>
      <pubDate>Tue, 10 Aug 2021 09:19:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1320778#M46113</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2021-08-10T09:19:27Z</dc:date>
    </item>
    <item>
      <title>Re: ADC interrupt is not triggering</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1321037#M46124</link>
      <description>&lt;P&gt;Yes Thank you , Software Triggering is working now&amp;nbsp;&lt;/P&gt;&lt;P&gt;But Hardware Triggering Through SCTimer is not working&lt;/P&gt;&lt;P&gt;here is the code for SCTimer initializations in LPC54606&lt;/P&gt;&lt;P&gt;void SCT0_Init(void)&lt;BR /&gt;{&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRL[1] |= (1 &amp;lt;&amp;lt; 2); // Clock to SCTimer&lt;BR /&gt;SYSCON-&amp;gt;PRESETCTRL[0] &amp;amp;=~(1 &amp;lt;&amp;lt; 2); //Clear Reset to ADC0&lt;/P&gt;&lt;P&gt;SCT0-&amp;gt;CONFIG |= (1 &amp;lt;&amp;lt; 0)|(1&amp;lt;&amp;lt;17) ; // unified 32-bit timer, auto limit&lt;BR /&gt;SCT0-&amp;gt;MATCHREL[0] = ui32Sct0_load_value ; // match 0&lt;BR /&gt;&lt;BR /&gt;SCT0-&amp;gt;MATCHREL[1] = 100 ; // match 1&lt;BR /&gt;&lt;BR /&gt;SCT0-&amp;gt;EV[0].STATE =0xFFFFFFFF ; // event 0 happens in all states&lt;BR /&gt;SCT0-&amp;gt;EV[0].CTRL &amp;amp;=~((1 &amp;lt;&amp;lt; 0) );&lt;/P&gt;&lt;P&gt;SCT0-&amp;gt;EV[0].CTRL = (1 &amp;lt;&amp;lt; 12) ;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;SCT0-&amp;gt;EV[1].STATE = 0xFFFFFFFF; // event 1 happens in state1&lt;BR /&gt;SCT0-&amp;gt;EV[1].CTRL = (1&amp;lt;&amp;lt;0|1 &amp;lt;&amp;lt; 12); // match 1 condition only&lt;BR /&gt;&lt;BR /&gt;SCT0-&amp;gt;OUT[5].SET =0x01;&lt;BR /&gt;SCT0-&amp;gt;OUT[5].CLR =0x02;&lt;/P&gt;&lt;P&gt;SCT0-&amp;gt;CTRL &amp;amp;= ~(1 &amp;lt;&amp;lt; 2); // un halt by clearing bit 2 of the CTRL (to start timer)&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;ADC initializations are&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void ADC0_init(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;SYSCON-&amp;gt;PDRUNCFG[0] &amp;amp;=~(1&amp;lt;&amp;lt;9|1&amp;lt;&amp;lt;19|1&amp;lt;&amp;lt;23|1&amp;lt;&amp;lt;10); //ADC Powered&lt;BR /&gt;SYSCON-&amp;gt;PDRUNCFG[1] &amp;amp;=~(1&amp;lt;&amp;lt;3);&lt;BR /&gt;&lt;BR /&gt;DelayMs(250); //Least of 20Microsec delay before enabling clock to ADC&lt;BR /&gt;&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRL[0] |= (1 &amp;lt;&amp;lt; 27); // Clock to ADC0&lt;BR /&gt;SYSCON-&amp;gt;PRESETCTRL[0] &amp;amp;=~(1 &amp;lt;&amp;lt; 27); //Clear Reset to ADC0&lt;BR /&gt;&lt;BR /&gt;DelayMs(200);&lt;BR /&gt;ADC0-&amp;gt;STARTUP|=0x01;&lt;BR /&gt;DelayMs(200);&lt;BR /&gt;ADC0-&amp;gt;STARTUP|=0x01&amp;lt;&amp;lt;1;&lt;BR /&gt;&lt;BR /&gt;ADC0-&amp;gt;INTEN = 0x01&amp;lt;&amp;lt;0;&lt;BR /&gt;NVIC_SetPriority(ADC0_SEQA_IRQn,3);&lt;BR /&gt;NVIC_EnableIRQ(ADC0_SEQA_IRQn);&lt;/P&gt;&lt;P&gt;vDisable_adc_fun(); //Disable all ADC chnls to avoid error&lt;BR /&gt;&lt;BR /&gt;IOCON-&amp;gt;PIO[0][ADCPinno[Chnlno]]&amp;amp;=~(1&amp;lt;&amp;lt;8); //Analog mode enable chnl by chnl&lt;BR /&gt;&lt;BR /&gt;ADC0-&amp;gt;CTRL =0x0659; //ADC clock as 30MHZ&lt;/P&gt;&lt;P&gt;ADC0-&amp;gt;SEQ_CTRL[0]&amp;amp;=(~(1UL &amp;lt;&amp;lt; 31));&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]&amp;amp;= ~(0xFFF);&lt;BR /&gt;&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0] |=(1&amp;lt;&amp;lt;14);&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0] |=1&amp;lt;&amp;lt;18 ;&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0] |=1&amp;lt;&amp;lt;28 ; //mode as single step&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0] &amp;amp;=~(1&amp;lt;&amp;lt;30) ; //mode as end of conversion&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]|=(0x01&amp;lt;&amp;lt;(ADCChnlno[Chnlno])); //Enable ADC chnl bit&lt;BR /&gt;&lt;BR /&gt;ADC0-&amp;gt;SEQ_CTRL[0]|= (1UL &amp;lt;&amp;lt; 31); //Enable Sequence&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&amp;amp;Regards&lt;/P&gt;&lt;P&gt;Nandini&lt;/P&gt;</description>
      <pubDate>Tue, 10 Aug 2021 10:33:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1321037#M46124</guid>
      <dc:creator>Nandini_19</dc:creator>
      <dc:date>2021-08-10T10:33:19Z</dc:date>
    </item>
    <item>
      <title>Re: ADC interrupt is not triggering</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1321568#M46135</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;good news that the software triggering mode is okay.&lt;/P&gt;
&lt;P&gt;For the SCT initilization code, pls refer to the code. It is developed based on LPC54114, maybe you have to change for LPC546xx. I suggest you output the PWM signal to a SCT_OUTx so that you know that the PWM works fine.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;XiangJun Rong&lt;/P&gt;
&lt;P&gt;void PWMInit(void)&lt;BR /&gt;{&lt;BR /&gt;//enable PWM module clock&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRLSET[0]=1&amp;lt;&amp;lt;20|1&amp;lt;&amp;lt;13; //enable both IOCON and DMA&lt;BR /&gt;SYSCON-&amp;gt;AHBCLKCTRLSET[1]=1&amp;lt;&amp;lt;2; //enable both IOCON and ADC0&lt;BR /&gt;//initialize the PWM module pins&lt;BR /&gt;IOCON-&amp;gt;PIO[0][7]=0x82;&lt;BR /&gt;IOCON-&amp;gt;PIO[0][8]=0x82;&lt;BR /&gt;IOCON-&amp;gt;PIO[0][9]=0x82;&lt;BR /&gt;IOCON-&amp;gt;PIO[0][10]=0x82;&lt;/P&gt;
&lt;P&gt;//select PWM clock source&lt;BR /&gt;SCT0-&amp;gt;CONFIG |= 1; // unified timer&lt;BR /&gt;SCT0-&amp;gt;SCTMATCHREL[0] = (SystemCoreClock/10)-1; // match 0 @ 10 Hz = 100 msec&lt;BR /&gt;SCT0-&amp;gt;SCTMATCHREL[1] = ((SystemCoreClock/10)/4)-1; // match 0 @ 10 Hz = 100 msec&lt;BR /&gt;SCT0-&amp;gt;SCTMATCHREL[2] = ((SystemCoreClock/10)/2)-1; // match 0 @ 10 Hz = 100 msec&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;EVENT[0].STATE = 0xFFFFFFFF; // event0 happen in all state&lt;BR /&gt;SCT0-&amp;gt;EVENT[0].CTRL = (0 &amp;lt;&amp;lt; 0) | (1 &amp;lt;&amp;lt; 12);&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;EVENT[1].STATE = 0xFFFFFFFF; // event1 happen in all state&lt;BR /&gt;SCT0-&amp;gt;EVENT[1].CTRL = (1 &amp;lt;&amp;lt; 0) | (1 &amp;lt;&amp;lt; 12);&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;EVENT[2].STATE = 0xFFFFFFFF; // event2 happen in all state&lt;BR /&gt;SCT0-&amp;gt;EVENT[2].CTRL = (2 &amp;lt;&amp;lt; 0) | (1 &amp;lt;&amp;lt; 12);&lt;/P&gt;
&lt;P&gt;SCT0-&amp;gt;OUT[0].SET = (1 &amp;lt;&amp;lt; 1); // event 1 will set SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;OUT[0].CLR = (1 &amp;lt;&amp;lt; 2); // event 2 will clear SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;OUT[7].SET = (1 &amp;lt;&amp;lt; 1); // event 1 will set SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;OUT[7].CLR = (1 &amp;lt;&amp;lt; 2); // event 2 will clear SCT_OUT0&lt;BR /&gt;SCT0-&amp;gt;LIMIT = 0x0001; // events 0 and 1 are used as counter limit&lt;BR /&gt;SCT0-&amp;gt;CTRL &amp;amp;= ~(1 &amp;lt;&amp;lt; 2); // unhalt by clearing bit 2 of CTRL register&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;</description>
      <pubDate>Wed, 11 Aug 2021 05:42:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/ADC-interrupt-is-not-triggering/m-p/1321568#M46135</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2021-08-11T05:42:00Z</dc:date>
    </item>
  </channel>
</rss>

