<?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 Re: LPC1768: Sporadic wrong ADC values read from register when debugger is running. in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-Sporadic-wrong-ADC-values-read-from-register-when/m-p/524927#M7563</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;bump&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 19 Jun 2016 01:08:01 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-19T01:08:01Z</dc:date>
    <item>
      <title>LPC1768: Sporadic wrong ADC values read from register when debugger is running.</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-Sporadic-wrong-ADC-values-read-from-register-when/m-p/524926#M7562</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Ronny Friedrich on Tue Apr 12 09:02:25 MST 2016&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I noticed recently some strange "spikes" in measured ADC values using the ADC running in burst mode using the DMA on MCB1700 evalboard.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The wrong samples are in most cases above 4000, however there are also some other samples with extrem deviations.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After no spikes can be seen directly at the ADC pin (ADC0.2) via scope I simplified the code to polling the "Done" Flag and read the register directly:&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;
#include "inttypes.h"
#include "stdbool.h"
#include "LPC17xx.h"
#include "ADC_LPC175x_6x.h"
#include "SCU_LPC175x_6x.h"
#include "CLOCK_LPC175x_6x.h"

int main ( void )
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; static uint32_t measCnt = 0, errCnt = 0, temp, last_temp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PINSEL_CFG_Type pinCfg;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;gt;PCONP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= CLKPWR_PCONP_PCAD;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; pinCfg.Funcnum = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pinCfg.Pinnum&amp;nbsp; = 25;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pinCfg.Portnum = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PINSEL_ConfigPin(&amp;amp;pinCfg);

&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO2-&amp;gt;FIODIR |= (1&amp;lt;&amp;lt;5);
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO2-&amp;gt;FIODIR |= (1&amp;lt;&amp;lt;6);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADC-&amp;gt;ADCR&amp;nbsp;&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_CR_PDN;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADC-&amp;gt;ADINTEN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADC-&amp;gt;ADCR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (1UL&amp;lt;&amp;lt;2);&amp;nbsp; /* Bits 7:0 Channel select */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_ADC-&amp;gt;ADCR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |= (6&amp;lt;&amp;lt;8);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Bits 15:8 ClkDiv&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;nbsp;&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_CR_BURST; /* Start Burst&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; __disable_irq();
&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( 1 )
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO2-&amp;gt;FIOSET = (1UL&amp;lt;&amp;lt;6UL);&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( (LPC_ADC-&amp;gt;ADGDR &amp;amp; ADC_DR_DONE_FLAG) == 0) {};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO2-&amp;gt;FIOCLR = (1UL&amp;lt;&amp;lt;6UL);&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; temp = ADC_DR_RESULT(LPC_ADC-&amp;gt;ADGDR);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( (temp &amp;gt; last_temp+160) || (temp &amp;lt; last_temp-160) )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; errCnt++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO2-&amp;gt;FIOSET = (1UL&amp;lt;&amp;lt;5UL);&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; measCnt++;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO2-&amp;gt;FIOCLR = (1UL&amp;lt;&amp;lt;5UL);&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; last_temp = temp;
&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;BR /&gt;&lt;SPAN&gt;The code above should run with a samplingrate of ~55kHz which can be seen at P2.6. "PCLK_ADC0"&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;should run at 25MHz resulting at a ADC frequency of approx. 8 MHz which is below the maximum allowed&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ADC clock of 13 MHz.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When no debugger is attached, there is no pulse at P2.5 at all. However, with debugger attached to the&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;target "errCnt" does increment quite often and a few pulses at P2.5 can be measured per second.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When ClkDiv is increased to values above 0x80 almost no pulses can be seen anymore.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there a known issue about the maximum allowed samplingrate / adc clock when a JTAG session is&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;active? I know about the ADC hw designguidelines mentioning noise influences when debugging the&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;target, but this seems to be a different issue.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 18:08:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-Sporadic-wrong-ADC-values-read-from-register-when/m-p/524926#M7562</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T18:08:59Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1768: Sporadic wrong ADC values read from register when debugger is running.</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-Sporadic-wrong-ADC-values-read-from-register-when/m-p/524927#M7563</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;bump&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 19 Jun 2016 01:08:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-Sporadic-wrong-ADC-values-read-from-register-when/m-p/524927#M7563</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-19T01:08:01Z</dc:date>
    </item>
  </channel>
</rss>

