<?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: LPC1769 unexpected value returns from ADC</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516766#M1845</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by R2D2 on Mon Nov 11 03:42:37 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Your code snippet isn't faulty. (BTW: You don't need to stop ADC conversion after ADC_DONE).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Not sure which compiler &amp;amp; hardware you are using, but in LPCXpresso with LPCXpresso1769 Board your code is working &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; &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;
/*
===============================================================================
 Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : main.c
 Author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : $(author)
 Version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :
 Copyright&amp;nbsp;&amp;nbsp; : $(copyright)
 Description : main definition
===============================================================================
*/

#include "LPC17xx.h"

#include &amp;lt;cr_section_macros.h&amp;gt;

#define ADC_OVERRUN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40000000
#define ADC_DONE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x80000000
#define ADC_Clk1000000/* set to 1Mhz */

volatile uint16_t adspl[50];

int main(void)
{
 volatile static int i = 0;
 volatile uint32_t regVal;
 volatile uint32_t pclkdiv,pclk;
 // AD initialize (AD0.0 1MHz polling read)
 LPC_SC-&amp;gt;PCONP |= (1 &amp;lt;&amp;lt; 12);
 LPC_PINCON-&amp;gt;PINSEL1 &amp;amp;= ~0x0000C000; // P0.23 A0.0 function 01
 LPC_PINCON-&amp;gt;PINSEL1 |= 0x00004000;
 LPC_PINCON-&amp;gt;PINMODE1 &amp;amp;= ~0x0000C000; // No pull-up no pull-down (function 10)
 LPC_PINCON-&amp;gt;PINMODE1 |= 0x00008000;
 pclkdiv = (LPC_SC-&amp;gt;PCLKSEL0 &amp;gt;&amp;gt; 24) &amp;amp; 0x03;
 switch ( pclkdiv ) {
 case 0x00:
 default:
 pclk = SystemCoreClock/4;
 break;
 case 0x01:
 pclk = SystemCoreClock;
 break;
 case 0x02:
 pclk = SystemCoreClock/2;
 break;
 case 0x03:
 pclk = SystemCoreClock/8;
 break;
 }
 LPC_ADC-&amp;gt;ADCR = ( 0x01 &amp;lt;&amp;lt; 0 ) | ( ( pclk / ADC_Clk - 1 ) &amp;lt;&amp;lt; 8 ) |
 ( 0 &amp;lt;&amp;lt; 16 ) | ( 0 &amp;lt;&amp;lt; 17 ) | ( 1 &amp;lt;&amp;lt; 21 ) | ( 0 &amp;lt;&amp;lt; 24 ) | ( 0 &amp;lt;&amp;lt; 27 );

// for(i=0; i&amp;lt;50; i++)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //simple ADC reading
// {
//&amp;nbsp; LPC_ADC-&amp;gt;ADCR |= (1 &amp;lt;&amp;lt; 24); // start adc
//&amp;nbsp; do
//&amp;nbsp; {
//&amp;nbsp;&amp;nbsp; regVal = LPC_ADC-&amp;gt;ADDR0; //check done bit
//&amp;nbsp; }while(!(regVal &amp;amp; ADC_DONE));//wait until Done is set
//&amp;nbsp; if ( regVal &amp;amp; ADC_OVERRUN ){adspl&lt;I&gt; = 0x1000;}//overrun
//&amp;nbsp; else{adspl&lt;I&gt; = ( regVal &amp;gt;&amp;gt; 4 ) &amp;amp; 0xFFF;}
// }


 for(i=0 ; i&amp;lt;50; i++) {
 LPC_ADC-&amp;gt;ADCR &amp;amp;= 0xFFFFFF00;
 LPC_ADC-&amp;gt;ADCR |= (1 &amp;lt;&amp;lt; 24) | (1 &amp;lt;&amp;lt; 0); // start adc
 for(;;){
 regVal = LPC_ADC-&amp;gt;ADDR0; // read result of A/D conversion
 if ( regVal &amp;amp; ADC_DONE )
 break;
 }
 //LPC_ADC-&amp;gt;ADCR &amp;amp;= 0xF8FFFFFF; // stop ADC now
 if ( regVal &amp;amp; ADC_OVERRUN ) {
 adspl&lt;I&gt; = 0x1000;
 continue;
 }
 adspl&lt;I&gt; = ( regVal &amp;gt;&amp;gt; 4 ) &amp;amp; 0xFFF;
 }


 while(1)
 {
&amp;nbsp; i++ ;
 }
 return 0 ;
}
&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So your problem is either your hardware or the rest of your code / project setup.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:23:16 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:23:16Z</dc:date>
    <item>
      <title>LPC1769 unexpected value returns from ADC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516761#M1840</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Kat on Mon Oct 21 00:35:23 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using the one analog CH of LPC1769 ADC by ADC CLOCK 1MHz Polling read. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If Read of the ADC is carried out continuously Inaccurate data sometimes like 0xfff is acquired. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If Read may be carried out 50x500 times and there may be no inaccurate data &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Inaccurate data may be acquired by 50x10 times of Read(s). &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Of course, AD input is not changed. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Would you teach the evasion method, if the direction which experienced such a situation and was avoided comes? &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The test code used for reference is attached. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Test code&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;---------------------------------------------------------------------&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // AD initialize&amp;nbsp; (AD0.0 1MHz polling read)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;gt;PCONP |= (1 &amp;lt;&amp;lt; 12);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL1 &amp;amp;= ~0x0000C000;// P0.23 A0.0 function 01&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINSEL1 |=&amp;nbsp; 0x00004000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINMODE1 &amp;amp;= ~0x0000C000;// No pull-up no pull-down (function 10)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_PINCON-&amp;gt;PINMODE1 |=&amp;nbsp; 0x00008000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclkdiv = (LPC_SC-&amp;gt;PCLKSEL0 &amp;gt;&amp;gt; 24) &amp;amp; 0x03;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch ( pclkdiv ) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x00:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemCoreClock/4;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x01:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemCoreClock;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x02:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemCoreClock/2;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x03:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pclk = SystemCoreClock/8;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADC-&amp;gt;ADCR = ( 0x01 &amp;lt;&amp;lt; 0 ) | ( ( pclk&amp;nbsp; / ADC_Clk - 1 ) &amp;lt;&amp;lt; 8 ) |&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;( 0 &amp;lt;&amp;lt; 16 ) | ( 0 &amp;lt;&amp;lt; 17 ) | ( 1 &amp;lt;&amp;lt; 21 ) | ( 0 &amp;lt;&amp;lt; 24 ) | ( 0 &amp;lt;&amp;lt; 27 );&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;){&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i=0, j=0; i&amp;lt;50; i++) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADC-&amp;gt;ADCR &amp;amp;= 0xFFFFFF00;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADC-&amp;gt;ADCR |= (1 &amp;lt;&amp;lt; 24) | (1 &amp;lt;&amp;lt; 0);// start adc&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(;;){&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;regVal = DR[0];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // read result of A/D conversion&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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; if ( regVal &amp;amp; ADC_DONE )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADC-&amp;gt;ADCR &amp;amp;= 0xF8FFFFFF;// stop ADC now&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( regVal &amp;amp; ADC_OVERRUN ) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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; adspl&lt;/SPAN&gt;&lt;I&gt; = 0x1000;&lt;BR /&gt;continue;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; adspl&lt;I&gt; = ( regVal &amp;gt;&amp;gt; 4 ) &amp;amp; 0xFFF;&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;BR /&gt;&lt;BR /&gt;&lt;/I&gt;&lt;/I&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:23:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516761#M1840</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:23:13Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1769 unexpected value returns from ADC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516762#M1841</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MarcVonWindscooting on Mon Oct 21 08:16:50 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;without looking at your code, let me tell you I once had false readings from that exact processor by having other ADC lines catching some noise. The manual says: the voltage on ADC lines must not exceed VREF otherwise ADC readings (meaning: maybe ALL ADC readings, even of other channels) may be incorrect. I enabled pull-down on the ADC input lines and all problems were gone!&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:23:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516762#M1841</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:23:14Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1769 unexpected value returns from ADC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516763#M1842</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Kat on Mon Oct 21 22:45:19 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi, MarcVonWindscooting. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you for the comment. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;However, the situation has not improved. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;AD input does not exceed VDDA on a circuit. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Moreover, 0xfff may be able to be read even if AD input is 0v. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If dummy weight is put in, frequency will fall, but reading 0xfff is not lost. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:23:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516763#M1842</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:23:15Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1769 unexpected value returns from ADC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516764#M1843</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Pacman on Tue Nov 05 11:56:33 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I just learned something about the ADC, and remembered that you had this problem.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Have you tried reading the DR[n] register &lt;/SPAN&gt;&lt;STRONG&gt;&lt;I&gt;after&lt;/I&gt;&lt;/STRONG&gt;&lt;SPAN&gt; you get the ADC_DONE flag ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I would expect the results might be slightly improved.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Please let me know if it changes anything.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:23:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516764#M1843</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:23:15Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1769 unexpected value returns from ADC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516765#M1844</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Kat on Mon Nov 11 02:45:40 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi, Pacman&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you for your advice. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The result of having tried your advice is as follows. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;After checking ADC_DONE flag, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If DR [n] is read again, only the value from which ADC_DONE fell can be read. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;AD value did not have change as a result. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:23:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516765#M1844</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:23:16Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1769 unexpected value returns from ADC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516766#M1845</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by R2D2 on Mon Nov 11 03:42:37 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Your code snippet isn't faulty. (BTW: You don't need to stop ADC conversion after ADC_DONE).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Not sure which compiler &amp;amp; hardware you are using, but in LPCXpresso with LPCXpresso1769 Board your code is working &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; &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;
/*
===============================================================================
 Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : main.c
 Author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : $(author)
 Version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :
 Copyright&amp;nbsp;&amp;nbsp; : $(copyright)
 Description : main definition
===============================================================================
*/

#include "LPC17xx.h"

#include &amp;lt;cr_section_macros.h&amp;gt;

#define ADC_OVERRUN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40000000
#define ADC_DONE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x80000000
#define ADC_Clk1000000/* set to 1Mhz */

volatile uint16_t adspl[50];

int main(void)
{
 volatile static int i = 0;
 volatile uint32_t regVal;
 volatile uint32_t pclkdiv,pclk;
 // AD initialize (AD0.0 1MHz polling read)
 LPC_SC-&amp;gt;PCONP |= (1 &amp;lt;&amp;lt; 12);
 LPC_PINCON-&amp;gt;PINSEL1 &amp;amp;= ~0x0000C000; // P0.23 A0.0 function 01
 LPC_PINCON-&amp;gt;PINSEL1 |= 0x00004000;
 LPC_PINCON-&amp;gt;PINMODE1 &amp;amp;= ~0x0000C000; // No pull-up no pull-down (function 10)
 LPC_PINCON-&amp;gt;PINMODE1 |= 0x00008000;
 pclkdiv = (LPC_SC-&amp;gt;PCLKSEL0 &amp;gt;&amp;gt; 24) &amp;amp; 0x03;
 switch ( pclkdiv ) {
 case 0x00:
 default:
 pclk = SystemCoreClock/4;
 break;
 case 0x01:
 pclk = SystemCoreClock;
 break;
 case 0x02:
 pclk = SystemCoreClock/2;
 break;
 case 0x03:
 pclk = SystemCoreClock/8;
 break;
 }
 LPC_ADC-&amp;gt;ADCR = ( 0x01 &amp;lt;&amp;lt; 0 ) | ( ( pclk / ADC_Clk - 1 ) &amp;lt;&amp;lt; 8 ) |
 ( 0 &amp;lt;&amp;lt; 16 ) | ( 0 &amp;lt;&amp;lt; 17 ) | ( 1 &amp;lt;&amp;lt; 21 ) | ( 0 &amp;lt;&amp;lt; 24 ) | ( 0 &amp;lt;&amp;lt; 27 );

// for(i=0; i&amp;lt;50; i++)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //simple ADC reading
// {
//&amp;nbsp; LPC_ADC-&amp;gt;ADCR |= (1 &amp;lt;&amp;lt; 24); // start adc
//&amp;nbsp; do
//&amp;nbsp; {
//&amp;nbsp;&amp;nbsp; regVal = LPC_ADC-&amp;gt;ADDR0; //check done bit
//&amp;nbsp; }while(!(regVal &amp;amp; ADC_DONE));//wait until Done is set
//&amp;nbsp; if ( regVal &amp;amp; ADC_OVERRUN ){adspl&lt;I&gt; = 0x1000;}//overrun
//&amp;nbsp; else{adspl&lt;I&gt; = ( regVal &amp;gt;&amp;gt; 4 ) &amp;amp; 0xFFF;}
// }


 for(i=0 ; i&amp;lt;50; i++) {
 LPC_ADC-&amp;gt;ADCR &amp;amp;= 0xFFFFFF00;
 LPC_ADC-&amp;gt;ADCR |= (1 &amp;lt;&amp;lt; 24) | (1 &amp;lt;&amp;lt; 0); // start adc
 for(;;){
 regVal = LPC_ADC-&amp;gt;ADDR0; // read result of A/D conversion
 if ( regVal &amp;amp; ADC_DONE )
 break;
 }
 //LPC_ADC-&amp;gt;ADCR &amp;amp;= 0xF8FFFFFF; // stop ADC now
 if ( regVal &amp;amp; ADC_OVERRUN ) {
 adspl&lt;I&gt; = 0x1000;
 continue;
 }
 adspl&lt;I&gt; = ( regVal &amp;gt;&amp;gt; 4 ) &amp;amp; 0xFFF;
 }


 while(1)
 {
&amp;nbsp; i++ ;
 }
 return 0 ;
}
&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So your problem is either your hardware or the rest of your code / project setup.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:23:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516766#M1845</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:23:16Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1769 unexpected value returns from ADC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516767#M1846</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Pacman on Mon Nov 11 10:39:17 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you for the feedback. I think this question probably needs to be answered by the NXP support team.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:23:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516767#M1846</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:23:17Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1769 unexpected value returns from ADC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516768#M1847</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by araki on Tue Feb 18 03:37:48 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I also had the same problem. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;However, it could be solved by supplying externally VDDA and VREFP. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Remove the FB1(chip beads) and supply the 3.3V from the outside.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:23:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516768#M1847</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:23:18Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1769 unexpected value returns from ADC</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516769#M1848</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by araki on Thu Mar 06 23:58:13 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I am sorry.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;External VREFP removes only the noise of the LPCXpresso board. (pulse noise of the lower 5 bits)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Even if improve the VREFP, abnormal values that are discussed here seems to occur.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:23:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1769-unexpected-value-returns-from-ADC/m-p/516769#M1848</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:23:18Z</dc:date>
    </item>
  </channel>
</rss>

