<?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>LPCXpresso IDE中的主题 Re: Conversion ADC value</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Conversion-ADC-value/m-p/557958#M14799</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Superfred on Sun Jul 19 03:07:58 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;itoa can't handle floats:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;stdlib.h:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;extern char * itoa(int value, char *vstring, unsigned int base);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I recommend to use integer arithmetic, this example gives you millivolts:&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;
int vrednostADC;
char buf[10]; 

vrednostADC = ADCRead(5);
itoa(vrednostADC, buf, 10);
PotisniChar(16, 5, 1, buf);

vrednostADC = (vrednostADC * 3300) / 4096;
itoa(vrednostADC, buf, 10);
PotisniChar(16, 6, 1, buf);
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note: it is important to use parenthesis in this calculation: (vrednostADC * 3300) / 4096.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Otherwise the compiler will replace 3300 / 4096 with 0 (integer rounded down) resulting a division by zero.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The parenthesis tell the compiler to not compute the constant value at compiletime.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 22:14:05 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T22:14:05Z</dc:date>
    <item>
      <title>Conversion ADC value</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Conversion-ADC-value/m-p/557955#M14796</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by drvrh on Wed Jul 15 00:12:42 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a problem with a conversion ADC value, I get ADC value (int) from my ADC, but when I would like convert to voltage (float) I cannot. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have get 0 after calculate and conversion. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ADC value get int number at 0 to 255. &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;
int iValue = 0;
int vrednostADC = 0;
float fVrednost = 0;
char vrednsotADC1[] = "";
char vredADC[] = "";

ADCInit(4400000);&amp;nbsp;&amp;nbsp;&amp;nbsp; //set 4.4MHz

&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1) {

&amp;nbsp;&amp;nbsp;&amp;nbsp; vrednostADC = ADCRead(5);
&amp;nbsp;&amp;nbsp;&amp;nbsp; fVrednost = vrednostADC * (3.3 / 4096);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //calculate voltage of ADC

&amp;nbsp;&amp;nbsp;&amp;nbsp; iValue=(int)fVrednost;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //convert form int to float

&amp;nbsp;&amp;nbsp;&amp;nbsp; itoa(iValue, vrednsotADC1, 10);
&amp;nbsp;&amp;nbsp;&amp;nbsp; itoa(vrednostADC, vredADC, 10);

&amp;nbsp;&amp;nbsp;&amp;nbsp; PotisniChar(16, 5, 1, vrednsotADC1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //look conversion value
&amp;nbsp;&amp;nbsp;&amp;nbsp; PotisniChar(16, 6, 1, vredADC);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //look value from ADC (int)
&amp;nbsp;&amp;nbsp;&amp;nbsp; //LCDPocisti();
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:14:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Conversion-ADC-value/m-p/557955#M14796</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:14:03Z</dc:date>
    </item>
    <item>
      <title>Re: Conversion ADC value</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Conversion-ADC-value/m-p/557956#M14797</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by TheFallGuy on Wed Jul 15 00:33:07 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;It is to do with the order of the conversion. Convertv vrednostADC to float first.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;(((float) vrednostADC) * 3.3) / 4096.0&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:14:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Conversion-ADC-value/m-p/557956#M14797</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:14:04Z</dc:date>
    </item>
    <item>
      <title>Re: Conversion ADC value</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Conversion-ADC-value/m-p/557957#M14798</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by starblue on Sun Jul 19 01:12:43 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: TheFallGuy&lt;/STRONG&gt;&lt;BR /&gt;It is to do with the order of the conversion. Convert vrednostADC to float first.&lt;BR /&gt;&lt;BR /&gt;(((float) vrednostADC) * 3.3) / 4096.0&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't think that is the problem.&amp;nbsp; 3.3 / 4096 gives a double, which gives another double when multiplied with vrednostADC, which then is converted to a float. So it should produce correct values.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: drvrh&lt;/STRONG&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
char vrednsotADC1[] = "";
char vredADC[] = "";
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This is horribly wrong, you will get buffer overflows. Better (you need to make sure that the size of the buffer is large enough):&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
char vrednsotADC1[12];
char vredADC[12];
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; iValue=(int)fVrednost;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //convert form int to float
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/SPAN&gt;&lt;HR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Assuming your ADC has 12 bits and is working correctly, this will give you an int 0...3. Maybe you just have a low input voltage? Also, the comment is wrong.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:14:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Conversion-ADC-value/m-p/557957#M14798</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:14:04Z</dc:date>
    </item>
    <item>
      <title>Re: Conversion ADC value</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Conversion-ADC-value/m-p/557958#M14799</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Superfred on Sun Jul 19 03:07:58 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;itoa can't handle floats:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;stdlib.h:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;extern char * itoa(int value, char *vstring, unsigned int base);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I recommend to use integer arithmetic, this example gives you millivolts:&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;
int vrednostADC;
char buf[10]; 

vrednostADC = ADCRead(5);
itoa(vrednostADC, buf, 10);
PotisniChar(16, 5, 1, buf);

vrednostADC = (vrednostADC * 3300) / 4096;
itoa(vrednostADC, buf, 10);
PotisniChar(16, 6, 1, buf);
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note: it is important to use parenthesis in this calculation: (vrednostADC * 3300) / 4096.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Otherwise the compiler will replace 3300 / 4096 with 0 (integer rounded down) resulting a division by zero.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The parenthesis tell the compiler to not compute the constant value at compiletime.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:14:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Conversion-ADC-value/m-p/557958#M14799</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:14:05Z</dc:date>
    </item>
  </channel>
</rss>

