<?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のトピックInaccurate timings using FreeRTOS + LPC1769?</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Inaccurate-timings-using-FreeRTOS-LPC1769/m-p/571208#M20484</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by xenod on Tue Apr 17 05:49:29 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a problem with periodic task timing not being very accurate. For example a high priority task with 10ms period is executed somewhere between 7ms - 10ms intervalls.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The periodic timing of the task is achieved with the following code:&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;vTaskDelayUntil(&amp;amp;xLastWake,(10/portTICK_RATE_MS));&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In the template for a FreeRTOS project there is a comment in the SetupHardware()-function that says that the system clock must be initialized to achieve accurate timing. Since I use CMSIS the function SystemInit(); is called from ResetISR on system boot. This function initializes the main oscillator and PLL to give CCLK of 100 Mhz and peripherals clock of 25 Mhz. Isn't this enough? Or do I have to re-init the clock in SetupHardware()? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Doesn't seem logical because as long as it is initialized before the scheduler is started everything should be ok?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's the code for SystemInit() from CMSIS-library:&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;void SystemInit (void)
{
#if (CLOCK_SETUP)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clock Setup&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;SCS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = SCS_Val;
&amp;nbsp; if (SCS_Val &amp;amp; (1 &amp;lt;&amp;lt; 5)) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If Main Oscillator is enabled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((LPC_SC-&amp;gt;SCS &amp;amp; (1&amp;lt;&amp;lt;6)) == 0);/* Wait for Oscillator to be ready&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; }

&amp;nbsp; LPC_SC-&amp;gt;CCLKCFG&amp;nbsp;&amp;nbsp; = CCLKCFG_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Setup Clock Divider&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; LPC_SC-&amp;gt;PCLKSEL0&amp;nbsp; = PCLKSEL0_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Peripheral Clock Selection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PCLKSEL1&amp;nbsp; = PCLKSEL1_Val;

&amp;nbsp; LPC_SC-&amp;gt;CLKSRCSEL = CLKSRCSEL_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Select Clock Source for PLL0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

#if (PLL0_SETUP)
&amp;nbsp; LPC_SC-&amp;gt;PLL0CFG&amp;nbsp;&amp;nbsp; = PLL0CFG_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* configure PLL0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0x55;

&amp;nbsp; LPC_SC-&amp;gt;PLL0CON&amp;nbsp;&amp;nbsp; = 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; /* PLL0 Enable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0x55;
&amp;nbsp; while (!(LPC_SC-&amp;gt;PLL0STAT &amp;amp; (1&amp;lt;&amp;lt;26)));/* Wait for PLOCK0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; LPC_SC-&amp;gt;PLL0CON&amp;nbsp;&amp;nbsp; = 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; /* PLL0 Enable &amp;amp; Connect&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0x55;
&amp;nbsp; while (!(LPC_SC-&amp;gt;PLL0STAT &amp;amp; ((1&amp;lt;&amp;lt;25) | (1&amp;lt;&amp;lt;24))));/* Wait for PLLC0_STAT &amp;amp; PLLE0_STAT */
#endif

#if (PLL1_SETUP)
&amp;nbsp; LPC_SC-&amp;gt;PLL1CFG&amp;nbsp;&amp;nbsp; = PLL1CFG_Val;
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0x55;

&amp;nbsp; LPC_SC-&amp;gt;PLL1CON&amp;nbsp;&amp;nbsp; = 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; /* PLL1 Enable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0x55;
&amp;nbsp; while (!(LPC_SC-&amp;gt;PLL1STAT &amp;amp; (1&amp;lt;&amp;lt;10)));/* Wait for PLOCK1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; LPC_SC-&amp;gt;PLL1CON&amp;nbsp;&amp;nbsp; = 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; /* PLL1 Enable &amp;amp; Connect&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0x55;
&amp;nbsp; while (!(LPC_SC-&amp;gt;PLL1STAT &amp;amp; ((1&amp;lt;&amp;lt; 9) | (1&amp;lt;&amp;lt; 8))));/* Wait for PLLC1_STAT &amp;amp; PLLE1_STAT */
#else
&amp;nbsp; LPC_SC-&amp;gt;USBCLKCFG = USBCLKCFG_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Setup USB Clock Divider&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#endif

&amp;nbsp; LPC_SC-&amp;gt;PCONP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = PCONP_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Power Control for Peripherals&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; LPC_SC-&amp;gt;CLKOUTCFG = CLKOUTCFG_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clock Output Configuration&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#endif

#if (FLASH_SETUP == 1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Flash Accelerator Setup&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;FLASHCFG&amp;nbsp; = (LPC_SC-&amp;gt;FLASHCFG &amp;amp; ~0x0000F000) | FLASHCFG_Val;
#endif
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 01:03:51 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T01:03:51Z</dc:date>
    <item>
      <title>Inaccurate timings using FreeRTOS + LPC1769?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Inaccurate-timings-using-FreeRTOS-LPC1769/m-p/571208#M20484</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by xenod on Tue Apr 17 05:49:29 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I have a problem with periodic task timing not being very accurate. For example a high priority task with 10ms period is executed somewhere between 7ms - 10ms intervalls.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The periodic timing of the task is achieved with the following code:&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;vTaskDelayUntil(&amp;amp;xLastWake,(10/portTICK_RATE_MS));&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In the template for a FreeRTOS project there is a comment in the SetupHardware()-function that says that the system clock must be initialized to achieve accurate timing. Since I use CMSIS the function SystemInit(); is called from ResetISR on system boot. This function initializes the main oscillator and PLL to give CCLK of 100 Mhz and peripherals clock of 25 Mhz. Isn't this enough? Or do I have to re-init the clock in SetupHardware()? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Doesn't seem logical because as long as it is initialized before the scheduler is started everything should be ok?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here's the code for SystemInit() from CMSIS-library:&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;void SystemInit (void)
{
#if (CLOCK_SETUP)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clock Setup&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;SCS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = SCS_Val;
&amp;nbsp; if (SCS_Val &amp;amp; (1 &amp;lt;&amp;lt; 5)) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* If Main Oscillator is enabled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((LPC_SC-&amp;gt;SCS &amp;amp; (1&amp;lt;&amp;lt;6)) == 0);/* Wait for Oscillator to be ready&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; }

&amp;nbsp; LPC_SC-&amp;gt;CCLKCFG&amp;nbsp;&amp;nbsp; = CCLKCFG_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Setup Clock Divider&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; LPC_SC-&amp;gt;PCLKSEL0&amp;nbsp; = PCLKSEL0_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Peripheral Clock Selection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PCLKSEL1&amp;nbsp; = PCLKSEL1_Val;

&amp;nbsp; LPC_SC-&amp;gt;CLKSRCSEL = CLKSRCSEL_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Select Clock Source for PLL0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

#if (PLL0_SETUP)
&amp;nbsp; LPC_SC-&amp;gt;PLL0CFG&amp;nbsp;&amp;nbsp; = PLL0CFG_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* configure PLL0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0x55;

&amp;nbsp; LPC_SC-&amp;gt;PLL0CON&amp;nbsp;&amp;nbsp; = 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; /* PLL0 Enable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0x55;
&amp;nbsp; while (!(LPC_SC-&amp;gt;PLL0STAT &amp;amp; (1&amp;lt;&amp;lt;26)));/* Wait for PLOCK0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; LPC_SC-&amp;gt;PLL0CON&amp;nbsp;&amp;nbsp; = 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; /* PLL0 Enable &amp;amp; Connect&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED&amp;nbsp; = 0x55;
&amp;nbsp; while (!(LPC_SC-&amp;gt;PLL0STAT &amp;amp; ((1&amp;lt;&amp;lt;25) | (1&amp;lt;&amp;lt;24))));/* Wait for PLLC0_STAT &amp;amp; PLLE0_STAT */
#endif

#if (PLL1_SETUP)
&amp;nbsp; LPC_SC-&amp;gt;PLL1CFG&amp;nbsp;&amp;nbsp; = PLL1CFG_Val;
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0x55;

&amp;nbsp; LPC_SC-&amp;gt;PLL1CON&amp;nbsp;&amp;nbsp; = 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; /* PLL1 Enable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0x55;
&amp;nbsp; while (!(LPC_SC-&amp;gt;PLL1STAT &amp;amp; (1&amp;lt;&amp;lt;10)));/* Wait for PLOCK1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; LPC_SC-&amp;gt;PLL1CON&amp;nbsp;&amp;nbsp; = 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; /* PLL1 Enable &amp;amp; Connect&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0xAA;
&amp;nbsp; LPC_SC-&amp;gt;PLL1FEED&amp;nbsp; = 0x55;
&amp;nbsp; while (!(LPC_SC-&amp;gt;PLL1STAT &amp;amp; ((1&amp;lt;&amp;lt; 9) | (1&amp;lt;&amp;lt; 8))));/* Wait for PLLC1_STAT &amp;amp; PLLE1_STAT */
#else
&amp;nbsp; LPC_SC-&amp;gt;USBCLKCFG = USBCLKCFG_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Setup USB Clock Divider&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#endif

&amp;nbsp; LPC_SC-&amp;gt;PCONP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = PCONP_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Power Control for Peripherals&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */

&amp;nbsp; LPC_SC-&amp;gt;CLKOUTCFG = CLKOUTCFG_Val;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Clock Output Configuration&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
#endif

#if (FLASH_SETUP == 1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Flash Accelerator Setup&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */
&amp;nbsp; LPC_SC-&amp;gt;FLASHCFG&amp;nbsp; = (LPC_SC-&amp;gt;FLASHCFG &amp;amp; ~0x0000F000) | FLASHCFG_Val;
#endif
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:03:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Inaccurate-timings-using-FreeRTOS-LPC1769/m-p/571208#M20484</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:03:51Z</dc:date>
    </item>
    <item>
      <title>Re: Inaccurate timings using FreeRTOS + LPC1769?</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Inaccurate-timings-using-FreeRTOS-LPC1769/m-p/571209#M20485</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by Rob65 on Tue Apr 17 09:07:36 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;This is very strange.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The&amp;nbsp; FreeRTOS tick is created using the systick timer running at 1 msec&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and vTaskDelayUntil waits until the tick counter is at the given value (i.e. 10 msec after you read the tick timer.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If your task runs at a rate that is shorter than 10 msec, there must be a problem with your program. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Rob&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:03:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Inaccurate-timings-using-FreeRTOS-LPC1769/m-p/571209#M20485</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:03:51Z</dc:date>
    </item>
  </channel>
</rss>

