<?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: The  ADC conversion in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638555#M13601</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,I want to calculate the conversion time for that&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;GetADCValue(E_ADC_CHANNEL_NUMBER leAdcChanNo) function.Could you please tell me,how much time it will&amp;nbsp;take to execute? I am using clock settings as follows,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;crystal frequency=20Mhz&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;#define _EXTERNAL_CLOCK&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;void InitClock(void)&lt;BR /&gt;{&lt;BR /&gt;while (GDUF_GLVLSF)&lt;BR /&gt;GDUF_GLVLSF = 1;&lt;/P&gt;&lt;P&gt;CPMUREFDIV_REFDIV = 3;&lt;BR /&gt;CPMUREFDIV_REFFRQ = 1;&lt;BR /&gt;CPMUSYNR_SYNDIV = 4;&lt;BR /&gt;CPMUSYNR_VCOFRQ = 1;&lt;BR /&gt;CPMUPOSTDIV_POSTDIV = 1;&lt;BR /&gt;#if 1 &lt;BR /&gt;// Oscillator clock monitor reset is enabled&lt;BR /&gt;CPMUOSC2_OMRE = 1;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef _EXTERNAL_CLOCK&lt;BR /&gt;CPMUOSC_OSCE = 1;&lt;BR /&gt;while (CPMUIFLG_UPOSC == 0) {}; // Wait for oscillator to start up (UPOSC=1) and PLL to lock (LOCK=1)&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;while (CPMUIFLG_LOCK == 0) {};&lt;BR /&gt;CPMURFLG = 0x60; //Clear PORF and LVRF&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 25 Jan 2017 11:54:10 GMT</pubDate>
    <dc:creator>pratibhasurabhi</dc:creator>
    <dc:date>2017-01-25T11:54:10Z</dc:date>
    <item>
      <title>Re: The  ADC conversion</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638552#M13598</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hello, I am using S12ZVML128 controller.&lt;/P&gt;&lt;P&gt;I am not getting ADC conversion result in result register.I have initialized ADC as following.I am calling &lt;SPAN&gt;GetADCValue(E_ADC_CHANNEL_NUMBER leAdcChanNo) function in main by passing channel number.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I am not getting what i&amp;nbsp;have missed in this code to get the conversion value.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Please help me for that?&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;volatile UINT8 ADC0CommandList[1][4] = {{0xC0,0x00,0x00,0x00}};&lt;/P&gt;&lt;P&gt;volatile UINT8 ADC1CommandList[1][4] = {{0xC0,0x00,0x00,0x00}};&lt;BR /&gt;volatile unsigned short ADC0ResultList[1] = {0};&lt;BR /&gt;volatile unsigned short ADC1ResultList[1] = {0};&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;typedef enum&lt;BR /&gt;{&lt;BR /&gt; ADC_CHANNEL_NO_TOTAL_PHASE_CURRENT=0x10, //AN0_0&lt;BR /&gt; ADC_CHANNEL_NO_W_PHASE_VOLTAGE=0x50, //AN1_0&lt;BR /&gt; ADC_CHANNEL_NO_V_PHASE_VOLTAGE=0x14, //AN0_4&lt;BR /&gt; ADC_CHANNEL_NO_U_PHASE_VOLTAGE=0x13, //AN0_3&lt;BR /&gt; ADC_CHANNEL_NO_TEMPERATURE_SENSOR=0x51, //AN1_1&lt;BR /&gt; ADC_CHANNEL_NO_BATTERY_VOLTAGE=0x52 //AN1_2&lt;BR /&gt;}E_ADC_CHANNEL_NUMBER;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void InitADC(void)&lt;BR /&gt;{&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;//ADC0&lt;BR /&gt; ADC0CTL_0 = 0x09; // single access mode-data bus,Trigger mode&lt;BR /&gt; //ADC0CTL_0_STR_SEQA = 1; // Store result at abort/restart&lt;BR /&gt; ADC0CTL_1=0x10;&lt;BR /&gt; ADC0STS=0x00;&lt;BR /&gt; ADC0FMT_DJM = 1; // left justified result data&lt;BR /&gt; ADC0FMT_SRES = 4; // 12-bit result&lt;BR /&gt; ADC0TIM=0; // clock: clk = fbus / (2x(reg.value + 1)) [0.25 - 8MHz]&lt;BR /&gt; ADC0CBP = ADC0CommandList;&lt;BR /&gt; ADC0RBP = ADC0ResultList;&lt;BR /&gt; ADC0CTL_0_ADC_EN = 1;&lt;BR /&gt;&lt;SPAN&gt;//ADC1&lt;/SPAN&gt;&lt;BR /&gt; ADC1CTL_0 = 0x09; // single access mode-data bus,Trigger mode&lt;BR /&gt;//ADC1CTL_0_STR_SEQA = 1; // Store result at abort/restart&lt;BR /&gt; ADC1CTL_1=0x10;&lt;BR /&gt; ADC1STS=0x00;&lt;BR /&gt; ADC1FMT_DJM = 1; // left justified result data&lt;BR /&gt; ADC1FMT_SRES = 4; // 12-bit result&lt;BR /&gt; ADC1TIM=0; // clock: clk = fbus / (2x(reg.value + 1)) [0.25 - 8MHz]&lt;BR /&gt; ADC1CBP = ADC1CommandList;&lt;BR /&gt; ADC1RBP = ADC1ResultList;&lt;BR /&gt; ADC1CTL_0_ADC_EN = 1;&lt;BR /&gt; &lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;UINT16 GetADCValue(E_ADC_CHANNEL_NUMBER leAdcChanNo)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT16 lu16AdcConvResult = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT8 lu8cmdListVar=0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;UINT8 var=0;&lt;BR /&gt; if((leAdcChanNo&amp;gt;&amp;gt;6)==1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//for ADC 1 channel&lt;BR /&gt; {&lt;BR /&gt; var=(leAdcChanNo &amp;amp; 0x3F)+0xC0;&lt;BR /&gt; ADC1CommandList[0][1]=var;&lt;BR /&gt; ADC1FLWCTL_RSTA = 1;&lt;BR /&gt; while(!ADC1CONIF)&lt;BR /&gt; {&lt;BR /&gt; &lt;BR /&gt; }&lt;BR /&gt; ADC1CONIF=ADC1CONIF;&lt;BR /&gt; return(ADC1ResultList[0]);&lt;BR /&gt; }&lt;BR /&gt; else if((leAdcChanNo&amp;gt;&amp;gt;6)!=1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;//for ADC 0 channel&lt;/SPAN&gt;&lt;BR /&gt; {&lt;BR /&gt; var=(leAdcChanNo &amp;amp; 0x3F)+0xC0;&lt;BR /&gt; ADC0CommandList[0][1]=var;&lt;BR /&gt; ADC0FLWCTL_RSTA = 1;&lt;BR /&gt; while(&lt;SPAN&gt;!ADC1CONIF&lt;/SPAN&gt;)&lt;BR /&gt; {&lt;BR /&gt; &lt;BR /&gt; }&lt;BR /&gt; ADC0CONIF=ADC0CONIF;&lt;BR /&gt; return(ADC0ResultList[0]);&lt;BR /&gt; }&lt;BR /&gt; else&lt;BR /&gt; {&lt;BR /&gt; &lt;BR /&gt; }&lt;BR /&gt; &lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 23 Jan 2017 13:10:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638552#M13598</guid>
      <dc:creator>pratibhasurabhi</dc:creator>
      <dc:date>2017-01-23T13:10:57Z</dc:date>
    </item>
    <item>
      <title>Re: The  ADC conversion</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638553#M13599</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN&gt;Hi PRATIBHA,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I shortly checked your code and currently I cannot see any obvious issue except the potential issue with command and result list alignment.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Please use:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;volatile UINT8 ADC0CommandList[1][4] __attribute__ ((aligned (4))) = {{0xC0,0x00,0x00,0x00}};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;volatile UINT8 ADC1CommandList[1][4] __attribute__ ((aligned (4))) = {{0xC0,0x00,0x00,0x00}};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;volatile unsigned short ADC0ResultList[1] __attribute__ ((aligned (4))) = {0};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;volatile unsigned short ADC1ResultList[1] __attribute__ ((aligned (4))) = {0};&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;These lists&lt;SPAN&gt; must be aligned to 4byte boundary due to internal DMA transfer mechanism.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope it helps you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;Radek&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 24 Jan 2017 22:19:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638553#M13599</guid>
      <dc:creator>RadekS</dc:creator>
      <dc:date>2017-01-24T22:19:55Z</dc:date>
    </item>
    <item>
      <title>Re: The  ADC conversion</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638554#M13600</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Than you very much,now my code is working.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Jan 2017 06:29:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638554#M13600</guid>
      <dc:creator>pratibhasurabhi</dc:creator>
      <dc:date>2017-01-25T06:29:24Z</dc:date>
    </item>
    <item>
      <title>Re: The  ADC conversion</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638555#M13601</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,I want to calculate the conversion time for that&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;GetADCValue(E_ADC_CHANNEL_NUMBER leAdcChanNo) function.Could you please tell me,how much time it will&amp;nbsp;take to execute? I am using clock settings as follows,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;crystal frequency=20Mhz&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;#define _EXTERNAL_CLOCK&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;void InitClock(void)&lt;BR /&gt;{&lt;BR /&gt;while (GDUF_GLVLSF)&lt;BR /&gt;GDUF_GLVLSF = 1;&lt;/P&gt;&lt;P&gt;CPMUREFDIV_REFDIV = 3;&lt;BR /&gt;CPMUREFDIV_REFFRQ = 1;&lt;BR /&gt;CPMUSYNR_SYNDIV = 4;&lt;BR /&gt;CPMUSYNR_VCOFRQ = 1;&lt;BR /&gt;CPMUPOSTDIV_POSTDIV = 1;&lt;BR /&gt;#if 1 &lt;BR /&gt;// Oscillator clock monitor reset is enabled&lt;BR /&gt;CPMUOSC2_OMRE = 1;&lt;BR /&gt;#endif&lt;BR /&gt;#ifdef _EXTERNAL_CLOCK&lt;BR /&gt;CPMUOSC_OSCE = 1;&lt;BR /&gt;while (CPMUIFLG_UPOSC == 0) {}; // Wait for oscillator to start up (UPOSC=1) and PLL to lock (LOCK=1)&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;while (CPMUIFLG_LOCK == 0) {};&lt;BR /&gt;CPMURFLG = 0x60; //Clear PORF and LVRF&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Jan 2017 11:54:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638555#M13601</guid>
      <dc:creator>pratibhasurabhi</dc:creator>
      <dc:date>2017-01-25T11:54:10Z</dc:date>
    </item>
    <item>
      <title>Re: The  ADC conversion</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638556#M13602</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN&gt;Hi PRATIBHA,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;When #ifdef _EXTERNAL_CLOCK&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;fREF = fOSC/(REFDIV + 1) = 20MHz/(3+1) = 5MHz&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;fVCO = 2 * fREF * (SYNDIV + 1) = 2*5MHz*(4+1)=50MHz&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;fPLL = fVCO/(POSTDIV + 1) = 50MHz/(1+1) = 25MHz&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;fBUS = fPLL/2 = 25MHz/2 = 12.5MHz&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;else&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;fREF = fIRC1M = 1MHz&amp;nbsp; //incorrect REFFRQ value&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;fVCO = 2 * fREF * (SYNDIV + 1) = 2*1MHz*(4+1)=10MHz //invalid fVCO, it has to be at least 32MHz &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;fPLL = fVCO/(POSTDIV + 1) = 10MHz/(1+1) = 5MHz&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;fBUS = fPLL/2 = 5MHz/2 = 2.5MHz&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;So, the #ifdef _EXTERNAL_CLOCK condition may be dangerous in your code. I would like to recommend add #else with PLL parameters for internal IRC clock as source.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Now, I let’s assume that you have fBUS = 12.5MHz.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Maximum fATDCLK is 8.33MHz&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The ADC prescaler value is zero at your code (ADC0TIM=0;). &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;So, fATDCLK= fbus / (2x(reg.value + 1)) = 6.25MHz&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Per your commands, the sample time is 4 ADC clocks&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The ADC Conversion Period for 12bit is 19~39 ADC clocks, where we will calculate with 19 due to shortest sample time.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;ADC Conversion Period = 19/fATDCLK = 3.04us.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope it helps you.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;Radek&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Jan 2017 10:19:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638556#M13602</guid>
      <dc:creator>RadekS</dc:creator>
      <dc:date>2017-01-27T10:19:16Z</dc:date>
    </item>
    <item>
      <title>Re: The  ADC conversion</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638557#M13603</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have calculated the&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;GetADCValue function execution time, its taking 9us to execute and inner while loop is taking 5us.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;I want to reduce this conversion time.Please suggest me for that.&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Jan 2017 07:52:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/Re-The-ADC-conversion/m-p/638557#M13603</guid>
      <dc:creator>pratibhasurabhi</dc:creator>
      <dc:date>2017-01-30T07:52:23Z</dc:date>
    </item>
  </channel>
</rss>

