<?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>topic LPC1114 + ADC CH0 &amp; CH1 - different work in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1114-ADC-CH0-CH1-different-work/m-p/540716#M12105</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by teslabox on Tue Jun 10 12:48:41 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi everyone!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I need to use two channels of ADC in the LPC1114. The first one is ADC0 and the second one is ADC1.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;First, I run ADC0 channel and everything is OK.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Next, I additionaly run ADC1 channel and it doesn't work and what more... it hangs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Below is my code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;First function is with "Frequency" argument byt in real it daesn't exist yet - there could be anythink for now.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Second function just read the ADC vaulue from propoer channel.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;void Init_ADC (uint8_t Frequency)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;PDRUNCFG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;= ~(0x1&amp;lt;&amp;lt;4);&amp;nbsp; //power the ADC (sec. 3.5.35)
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL&amp;nbsp;&amp;nbsp; |= (1&amp;lt;&amp;lt;13);&amp;nbsp;&amp;nbsp;&amp;nbsp; //enable clock for ADC (sec. 3.5.14)

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;R_PIO0_11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;= 0xFFFFFF78; //clear FUNC field for pin 32, set to analog input (sec. 7.4.28)
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;R_PIO0_11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1&amp;lt;&amp;lt;1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set to ADC mode for pin 32 (sec. 7.4.28)

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;R_PIO1_0&amp;amp;= 0xFFFFFF78; //clear FUNC field for pin 33, set to analog input (sec. 7.4.29)
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;R_PIO1_0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1&amp;lt;&amp;lt;1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set to ADC mode for pin 33 (sec. 7.4.29)

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADC-&amp;gt;CR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x0B03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //select ADC channel AD0 (pin 32) and AD1 (pin33), set up clock (sec 25.5.1)
}

uint16_t ADC_Read (uint8_t Channel)
{
uint16_t Data = 0;

LPC_ADC-&amp;gt;CR |= (1&amp;lt;&amp;lt;24);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //start conversion by setting "Start Conversion Now" bit (sec. 25.5.1)
while((LPC_ADC-&amp;gt;DR[Channel] &amp;lt; 0x7FFFFFFF));//wait for "done" bit to be set (sec. 25.5.4)
Data = (LPC_ADC-&amp;gt;DR[Channel] &amp;amp; 0xFFC0) &amp;gt;&amp;gt; 6;
return (Data);
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;And main loop:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;// main programm
int main (void)
{
uint32_t temp = 0;

Timer32b_0_Init();// Set clock to the Timer 32-bit No. 0
UART_Init (115200);// Set UART bitrate

Init_ADC (1);

for (;;)
{
Timer32b_0_ms (100);// just wait 100 ms

//temp = ADC_Read (0);// read data form ADC0 channel doesn't work, it hangs
// or
temp = ADC_Read (1);// read data form ADC1 channel works good

UART_Send4B (temp);// send temp value (4 bytes) to the PC terminal
}

 return (0);
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I run line with ADC1 I got in the PC terminal window:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;00 ef fc 7d&amp;nbsp; .ďü}
07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp; &lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;SPAN&gt;Always 5 bytes... Even if UART_Send4B always send 4 bytes.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I run line with ADC0 I got in the PC terminal window:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;00 00 00 09&amp;nbsp; ....
00 00 00 09&amp;nbsp; ....
00 00 00 80&amp;nbsp; ...€
00 00 01 95&amp;nbsp; ...•
00 00 02 2a&amp;nbsp; ...*
00 00 02 89&amp;nbsp; ...‰
00 00 02 e7&amp;nbsp; ...ç
00 00 03 23&amp;nbsp; ...#
00 00 03 53&amp;nbsp; ...S
00 00 03 82&amp;nbsp; ...‚
00 00 03 b8&amp;nbsp; ...¸
00 00 03 ea&amp;nbsp; ...ę
00 00 04 26&amp;nbsp; ...&amp;amp;
00 00 04 29&amp;nbsp; ...)
00 00 04 29&amp;nbsp; ...)
and so on...&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Exellent proper data.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have no idea what's going wrong on with ADC1 channel.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I also noticed that if the ADC pins are configured as ADC and they float there is c.a. 2,78 V - 2,99 V of voltage on them... strange for me because they are inputs, no outputs with output voltage.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 19:41:08 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T19:41:08Z</dc:date>
    <item>
      <title>LPC1114 + ADC CH0 &amp; CH1 - different work</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1114-ADC-CH0-CH1-different-work/m-p/540716#M12105</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by teslabox on Tue Jun 10 12:48:41 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi everyone!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I need to use two channels of ADC in the LPC1114. The first one is ADC0 and the second one is ADC1.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;First, I run ADC0 channel and everything is OK.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Next, I additionaly run ADC1 channel and it doesn't work and what more... it hangs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Below is my code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;First function is with "Frequency" argument byt in real it daesn't exist yet - there could be anythink for now.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Second function just read the ADC vaulue from propoer channel.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;void Init_ADC (uint8_t Frequency)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;PDRUNCFG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;= ~(0x1&amp;lt;&amp;lt;4);&amp;nbsp; //power the ADC (sec. 3.5.35)
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL&amp;nbsp;&amp;nbsp; |= (1&amp;lt;&amp;lt;13);&amp;nbsp;&amp;nbsp;&amp;nbsp; //enable clock for ADC (sec. 3.5.14)

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;R_PIO0_11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;= 0xFFFFFF78; //clear FUNC field for pin 32, set to analog input (sec. 7.4.28)
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;R_PIO0_11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1&amp;lt;&amp;lt;1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set to ADC mode for pin 32 (sec. 7.4.28)

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;R_PIO1_0&amp;amp;= 0xFFFFFF78; //clear FUNC field for pin 33, set to analog input (sec. 7.4.29)
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;R_PIO1_0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1&amp;lt;&amp;lt;1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set to ADC mode for pin 33 (sec. 7.4.29)

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADC-&amp;gt;CR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0x0B03;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //select ADC channel AD0 (pin 32) and AD1 (pin33), set up clock (sec 25.5.1)
}

uint16_t ADC_Read (uint8_t Channel)
{
uint16_t Data = 0;

LPC_ADC-&amp;gt;CR |= (1&amp;lt;&amp;lt;24);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //start conversion by setting "Start Conversion Now" bit (sec. 25.5.1)
while((LPC_ADC-&amp;gt;DR[Channel] &amp;lt; 0x7FFFFFFF));//wait for "done" bit to be set (sec. 25.5.4)
Data = (LPC_ADC-&amp;gt;DR[Channel] &amp;amp; 0xFFC0) &amp;gt;&amp;gt; 6;
return (Data);
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;And main loop:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;// main programm
int main (void)
{
uint32_t temp = 0;

Timer32b_0_Init();// Set clock to the Timer 32-bit No. 0
UART_Init (115200);// Set UART bitrate

Init_ADC (1);

for (;;)
{
Timer32b_0_ms (100);// just wait 100 ms

//temp = ADC_Read (0);// read data form ADC0 channel doesn't work, it hangs
// or
temp = ADC_Read (1);// read data form ADC1 channel works good

UART_Send4B (temp);// send temp value (4 bytes) to the PC terminal
}

 return (0);
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I run line with ADC1 I got in the PC terminal window:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;00 ef fc 7d&amp;nbsp; .ďü}
07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .&amp;nbsp;&amp;nbsp; &lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;SPAN&gt;Always 5 bytes... Even if UART_Send4B always send 4 bytes.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I run line with ADC0 I got in the PC terminal window:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;00 00 00 09&amp;nbsp; ....
00 00 00 09&amp;nbsp; ....
00 00 00 80&amp;nbsp; ...€
00 00 01 95&amp;nbsp; ...•
00 00 02 2a&amp;nbsp; ...*
00 00 02 89&amp;nbsp; ...‰
00 00 02 e7&amp;nbsp; ...ç
00 00 03 23&amp;nbsp; ...#
00 00 03 53&amp;nbsp; ...S
00 00 03 82&amp;nbsp; ...‚
00 00 03 b8&amp;nbsp; ...¸
00 00 03 ea&amp;nbsp; ...ę
00 00 04 26&amp;nbsp; ...&amp;amp;
00 00 04 29&amp;nbsp; ...)
00 00 04 29&amp;nbsp; ...)
and so on...&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Exellent proper data.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have no idea what's going wrong on with ADC1 channel.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I also noticed that if the ADC pins are configured as ADC and they float there is c.a. 2,78 V - 2,99 V of voltage on them... strange for me because they are inputs, no outputs with output voltage.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:41:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1114-ADC-CH0-CH1-different-work/m-p/540716#M12105</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:41:08Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1114 + ADC CH0 &amp; CH1 - different work</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1114-ADC-CH0-CH1-different-work/m-p/540717#M12106</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ano on Wed Oct 08 09:09:09 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Did somebody find an answer to this problem? I'm having the same problem with adding a second Channel to my code. Channel0 works fine adding Channel1 makes the whole thing hang up in the waiting for conversion while() loop of the second channel.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Am working on LPC11C14.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;/edit: Sry, my mistake. Found the solution in this thread: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fforum%2Flpc1769-adc-code" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/content/forum/lpc1769-adc-code&lt;/A&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:41:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1114-ADC-CH0-CH1-different-work/m-p/540717#M12106</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:41:09Z</dc:date>
    </item>
  </channel>
</rss>

