<?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: [Not the usual] PLL initialisation question (LPC1768) in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Not-the-usual-PLL-initialisation-question-LPC1768/m-p/517112#M2016</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_Paul on Mon May 06 11:47:00 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;P&gt;I would recommend that you look at the LPC17xx example code we have available for download from:&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;a href="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fnode%2F11538%2F129" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/node/11538/129&lt;/A&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fnode%2F11538%2F129" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/node/11538/129&lt;/A&gt;&lt;SPAN&gt;&amp;lt;/a&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;Take a look at the system_LPC17xx.c file for details.&lt;BR /&gt;The only thing I could see as a potential problem were the statements:&lt;BR /&gt;LPC_SC-&amp;amp;gt;PLL0FEED |= 0xAA;&lt;BR /&gt;LPC_SC-&amp;amp;gt;PLL0FEED |= 0x55;&lt;BR /&gt;Note that the PLL0FEED register is a write-only register, so the feed sequence should be:&lt;BR /&gt;LPC_SC-&amp;amp;gt;PLL0FEED = 0xAA;&lt;BR /&gt;LPC_SC-&amp;amp;gt;PLL0FEED = 0x55;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:26:05 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:26:05Z</dc:date>
    <item>
      <title>[Not the usual] PLL initialisation question (LPC1768)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Not-the-usual-PLL-initialisation-question-LPC1768/m-p/517111#M2015</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by DiBosco on Fri Apr 26 04:25:38 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;P&gt;I have inherited some code from someone for the LPC1768. In the PLL initialisation he has some really ugly code that jumps to a reset vector if the PLL's registers aren't set to the correct values and just tries again until it works. I'm just not having that as a valid way of working (quite aside from having gotos in C), it just can't be the right way of initialising the peripheral. &lt;BR /&gt;&lt;BR /&gt;However, if I do not follow this reset procedure, I simply cannot get the PLLSTAT register to hold anything other than 0 and I'm stuck waiting for the PLL initialise, which it never does. The IAR examples show you how to set up all peripherals other than, as far as I can see, the PLL, so I can't go and look there for help. &lt;BR /&gt;&lt;BR /&gt;I printed out 4.5.13 of the user manual and followed the nine steps, but never get past the PLL being initialised. Anyone able to help please? I have the code below. &lt;BR /&gt;&lt;BR /&gt;If anyone has a snippet of the relevant part of the code that works for them it would be useful too. As far as I can see I have no forgotten to initialise something else necessary, but maybe that's all it is?&lt;BR /&gt;&lt;BR /&gt;Thanks a lot. &lt;BR /&gt;&lt;BR /&gt;------------------------------------------------------------------------------------&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;// Step 1 - Disconnect PLL &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0CON &amp;amp;amp;= ~CLKPWR_PLL0CON_CONNECT;&amp;nbsp;&amp;nbsp; // Disconnect PLL0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0FEED |= 0xAA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0FEED |= 0x55;&lt;BR /&gt;// Step 2 - Disable PLL&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0CON &amp;amp;amp;= ~CLKPWR_PLL0CON_ENABLE;&amp;nbsp;&amp;nbsp; // Disable PLL0&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0FEED |= 0xAA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0FEED |= 0x55;&lt;BR /&gt;// step 3 - Change clock divisor&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;CCLKCFG = 0x02;&amp;nbsp; //Set the divider (to 3-see calcs below)&lt;BR /&gt;// Step 4 - Change the clock source&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;SCS &amp;amp;amp;= 0x00000060; //Set up the external clock. We have a 12MHz Xtal - Set B4 low&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;SCS |= 0x00000020;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Start EXTOSC&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!LPC_SC-&amp;amp;gt;SCS &amp;amp;amp; 0x00000040);&amp;nbsp; //And wait for it to become stable&lt;BR /&gt;//Select XTAL as the clock source input to PLL&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;CLKSRCSEL = CLKPWR_CLKSRCSEL_CLKSRC_MAINOSC;&lt;BR /&gt;// Step 5 - Write to PLL0CFG, this sets multiply and divide values. &lt;BR /&gt;// 12MHz crystal giving 96MHz clock&lt;BR /&gt;// Target PLL output would therefore be 288MHz&lt;BR /&gt;// Maths is ((Ctarg)288*1000000*1)/(2*(XTAL)12*1000000)=12=0x0C &lt;BR /&gt;// This gives us a divider of 1 and a multiplier of (N-1,M-1)0x0B&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0CFG = 0x0B; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0FEED |= 0xAA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0FEED |= 0x55;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;// Step 6 - Enable PLL&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0CON = CLKPWR_PLL0CON_ENABLE;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0FEED |= 0xAA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0FEED |= 0x55;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;// Step 7 - already done in step 3&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;// Step 8 - Wait for PLL to lock&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((LPC_SC-&amp;amp;gt;PLL0STAT &amp;amp;amp; CLKPWR_PLL0STAT_PLOCK) == 0);&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;lt;---always stuck here&lt;BR /&gt;// Step 10 - Connect the system clock to the PLL&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0CON |= CLKPWR_PLL0CON_CONNECT;&amp;nbsp;&amp;nbsp; // Connect PLL0 now it is locked&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0FEED |= 0xAA;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;amp;gt;PLL0FEED |= 0x55;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:26:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Not-the-usual-PLL-initialisation-question-LPC1768/m-p/517111#M2015</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:26:04Z</dc:date>
    </item>
    <item>
      <title>Re: [Not the usual] PLL initialisation question (LPC1768)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Not-the-usual-PLL-initialisation-question-LPC1768/m-p/517112#M2016</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_Paul on Mon May 06 11:47:00 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;P&gt;I would recommend that you look at the LPC17xx example code we have available for download from:&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;a href="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fnode%2F11538%2F129" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/node/11538/129&lt;/A&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fnode%2F11538%2F129" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/node/11538/129&lt;/A&gt;&lt;SPAN&gt;&amp;lt;/a&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;Take a look at the system_LPC17xx.c file for details.&lt;BR /&gt;The only thing I could see as a potential problem were the statements:&lt;BR /&gt;LPC_SC-&amp;amp;gt;PLL0FEED |= 0xAA;&lt;BR /&gt;LPC_SC-&amp;amp;gt;PLL0FEED |= 0x55;&lt;BR /&gt;Note that the PLL0FEED register is a write-only register, so the feed sequence should be:&lt;BR /&gt;LPC_SC-&amp;amp;gt;PLL0FEED = 0xAA;&lt;BR /&gt;LPC_SC-&amp;amp;gt;PLL0FEED = 0x55;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:26:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Not-the-usual-PLL-initialisation-question-LPC1768/m-p/517112#M2016</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:26:05Z</dc:date>
    </item>
  </channel>
</rss>

