<?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>Kinetis MicrocontrollersのトピックRe: How to execute auto trim in kinetis KL26?</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-execute-auto-trim-in-kinetis-KL26/m-p/492121#M30405</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've found my mistake.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I must to write to MCG_ATCVH and MCG_ATCVL before :&lt;/P&gt;&lt;P&gt;MCG_SC = MCG_SC_ATMS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; internal 4MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_SC = MCG_SC_ATME_MASK | MCG_SC_ATMS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Activate Trim internal 4MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (MCG_SC &amp;amp; MCG_SC_ATME_MASK &amp;amp;&amp;amp; !(MCG_SC &amp;amp; MCG_SC_ATMF_MASK)){}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code is this:&lt;/P&gt;&lt;P&gt;&amp;nbsp; register unsigned short ATCV;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &amp;lt;&amp;lt; Line added at the begining&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp; ATCV = 21 * 8 / 4 * 128;&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; // Line added&amp;nbsp;&amp;nbsp;&amp;nbsp; 8 is my reference clock,&amp;nbsp; 4 is the internal Clock (both in MHz)&amp;nbsp; 21 and 128 are given in the manual&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_ATCVH = (unsigned char)((ATCV &amp;gt;&amp;gt; 8) &amp;amp; 0x00FF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Line added&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_ATCVL = (unsigned char)(ATCV &amp;amp; 0x00FF);&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; // Line added&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_SC = MCG_SC_ATMS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; internal 4MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_SC = MCG_SC_ATME_MASK | MCG_SC_ATMS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Activate Trim internal 4MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (MCG_SC &amp;amp; MCG_SC_ATME_MASK &amp;amp;&amp;amp; !(MCG_SC &amp;amp; MCG_SC_ATMF_MASK)){}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope it will be usefull for some one.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 14 Jan 2016 16:23:06 GMT</pubDate>
    <dc:creator>PedroBecerra</dc:creator>
    <dc:date>2016-01-14T16:23:06Z</dc:date>
    <item>
      <title>How to execute auto trim in kinetis KL26?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-execute-auto-trim-in-kinetis-KL26/m-p/492120#M30404</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've tried to trim my kinetis kl26. But I cannot see any change on MCG_C3 or MCG_C4 registers. So I think i'm wrong in some step.&lt;/P&gt;&lt;P&gt;First I configure kinetis to be clocked with an external 8MHz cristall.&lt;/P&gt;&lt;P&gt;And then I proceed with the auto trim internal 4MHz oscilator.&lt;/P&gt;&lt;P&gt;May be auto trim doesn't work if multilink is connectet?&lt;/P&gt;&lt;P&gt;All code is taken from processor expert unles the last 3 lines.&lt;/P&gt;&lt;P&gt;This is my trim code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SCB_VTOR = (uint32_t)(&amp;amp;__vect_table); /* Set the interrupt vector table position */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Disable the WDOG module */&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_COPC = SIM_COPC_COPT(0x00);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_CLKDIV1 = (SIM_CLKDIV1_OUTDIV1(0x00) | SIM_CLKDIV1_OUTDIV4(0x03)); /* Set the system prescalers to safe value */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* SIM_SCGC5: PORTA=1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;&amp;nbsp;&amp;nbsp; /* Enable clock gate for ports to enable pin routing */&lt;/P&gt;&lt;P&gt;&amp;nbsp; if ((PMC_REGSC &amp;amp; PMC_REGSC_ACKISO_MASK) != 0x0U) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* PMC_REGSC: ACKISO=1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PMC_REGSC |= PMC_REGSC_ACKISO_MASK; /* Release IO pads after wakeup from VLLS mode. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* SIM_CLKDIV1: OUTDIV1=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,OUTDIV4=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0,??=0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_CLKDIV1 = (SIM_CLKDIV1_OUTDIV1(0x00) | SIM_CLKDIV1_OUTDIV4(0x00)); /* Update system prescalers */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* SIM_SOPT2: PLLFLLSEL=1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK; /* Select PLL as a clock source for various peripherals */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* SIM_SOPT1: OSC32KSEL=3 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_SOPT1 |= SIM_SOPT1_OSC32KSEL(0x03); /* LPO 1kHz oscillator drives 32 kHz clock for various peripherals */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* SIM_SOPT2: TPMSRC=0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_SOPT2 &amp;amp;= (uint32_t)~(uint32_t)(SIM_SOPT2_TPMSRC(0x03)); /* Set the TPM clock */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* PORTA_PCR18: ISF=0,MUX=0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTA_PCR18 &amp;amp;= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07)));&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* PORTA_PCR19: ISF=0,MUX=0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTA_PCR19 &amp;amp;= (uint32_t)~(uint32_t)((PORT_PCR_ISF_MASK | PORT_PCR_MUX(0x07)));&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* MCG_SC: FCRDIV=0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_SC &amp;amp;= (uint8_t)~(uint8_t)(MCG_SC_FCRDIV(0x07));&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Switch to FBE Mode */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* MCG_C2: LOCRE0=0,RANGE0=2,HGO0=0,EREFS0=1,LP=0,IRCS=1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_C2 = (uint8_t)((MCG_C2 &amp;amp; (uint8_t)~(uint8_t)(&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C2_LOCRE0_MASK |&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C2_RANGE0(0x01) |&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C2_HGO0_MASK |&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C2_LP_MASK&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )) | (uint8_t)(&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C2_RANGE0(0x02) |&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C2_EREFS0_MASK |&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCG_C2_IRCS_MASK&lt;/P&gt;&lt;P&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;&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; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* OSC0_CR: ERCLKEN=1,??=0,EREFSTEN=0,??=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; OSC0_CR = OSC_CR_ERCLKEN_MASK;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* MCG_C1: CLKS=2,FRDIV=3,IREFS=0,IRCLKEN=1,IREFSTEN=0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_C1 = (MCG_C1_CLKS(0x02) | MCG_C1_FRDIV(0x03) | MCG_C1_IRCLKEN_MASK);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* MCG_C4: DMX32=0,DRST_DRS=0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_C4 &amp;amp;= (uint8_t)~(uint8_t)((MCG_C4_DMX32_MASK | MCG_C4_DRST_DRS(0x03)));&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* MCG_C5: ??=0,PLLCLKEN0=0,PLLSTEN0=0,PRDIV0=1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_C5 = MCG_C5_PRDIV0(0x01);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* MCG_C6: LOLIE0=0,PLLS=0,CME0=0,VDIV0=0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_C6 = MCG_C6_VDIV0(0x00);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; while((MCG_S &amp;amp; MCG_S_IREFST_MASK) != 0x00U) { /* Check that the source of the FLL reference clock is the external reference clock. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; while((MCG_S &amp;amp; 0x0CU) != 0x08U) {&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait until external reference clock is selected as MCG output */&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Switch to PBE Mode */&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* MCG_C6: LOLIE0=0,PLLS=1,CME0=0,VDIV0=0 */&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_C6 = (MCG_C6_PLLS_MASK | MCG_C6_VDIV0(0x00));&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; while((MCG_S &amp;amp; 0x0CU) != 0x08U) {&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait until external reference clock is selected as MCG output */&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; while((MCG_S &amp;amp; MCG_S_LOCK0_MASK) == 0x00U) { /* Wait until locked */&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_SC = MCG_SC_ATMS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; internal 4MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_SC = MCG_SC_ATME_MASK | MCG_SC_ATMS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Activate Trim internal 4MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (MCG_SC &amp;amp; MCG_SC_ATME_MASK &amp;amp;&amp;amp; !(MCG_SC &amp;amp; MCG_SC_ATMF_MASK)){}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jan 2016 15:54:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-execute-auto-trim-in-kinetis-KL26/m-p/492120#M30404</guid>
      <dc:creator>PedroBecerra</dc:creator>
      <dc:date>2016-01-14T15:54:46Z</dc:date>
    </item>
    <item>
      <title>Re: How to execute auto trim in kinetis KL26?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-execute-auto-trim-in-kinetis-KL26/m-p/492121#M30405</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've found my mistake.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I must to write to MCG_ATCVH and MCG_ATCVL before :&lt;/P&gt;&lt;P&gt;MCG_SC = MCG_SC_ATMS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; internal 4MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_SC = MCG_SC_ATME_MASK | MCG_SC_ATMS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Activate Trim internal 4MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (MCG_SC &amp;amp; MCG_SC_ATME_MASK &amp;amp;&amp;amp; !(MCG_SC &amp;amp; MCG_SC_ATMF_MASK)){}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code is this:&lt;/P&gt;&lt;P&gt;&amp;nbsp; register unsigned short ATCV;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &amp;lt;&amp;lt; Line added at the begining&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp; ATCV = 21 * 8 / 4 * 128;&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; // Line added&amp;nbsp;&amp;nbsp;&amp;nbsp; 8 is my reference clock,&amp;nbsp; 4 is the internal Clock (both in MHz)&amp;nbsp; 21 and 128 are given in the manual&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_ATCVH = (unsigned char)((ATCV &amp;gt;&amp;gt; 8) &amp;amp; 0x00FF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Line added&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_ATCVL = (unsigned char)(ATCV &amp;amp; 0x00FF);&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; // Line added&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_SC = MCG_SC_ATMS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; internal 4MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; MCG_SC = MCG_SC_ATME_MASK | MCG_SC_ATMS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Activate Trim internal 4MHz clock&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (MCG_SC &amp;amp; MCG_SC_ATME_MASK &amp;amp;&amp;amp; !(MCG_SC &amp;amp; MCG_SC_ATMF_MASK)){}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope it will be usefull for some one.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 14 Jan 2016 16:23:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-execute-auto-trim-in-kinetis-KL26/m-p/492121#M30405</guid>
      <dc:creator>PedroBecerra</dc:creator>
      <dc:date>2016-01-14T16:23:06Z</dc:date>
    </item>
  </channel>
</rss>

