<?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 Timer Problem (LPC1768) in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timer-Problem-LPC1768/m-p/522276#M4912</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by expressouser on Sat Jul 12 05:29:17 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi, &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am having some problem with TIMER, PCLK divider doesn't seem to work. Even if I set the pclk divider to a value different than that of the default value, it seems like the timer uses the default value.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is the part where I configure the timer:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;pclk_tick = ((double) 1/ ( SystemFrequency/4) ) * 1000; //ms per PCLK tick.&amp;nbsp; SystemFrequency is at 100MHz.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // pclk_tick = ((double) 1/ ( SystemFrequency) ) * 1000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // this part doesnt work. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;counter = ((uint32_t) timer-&amp;gt;interval) / pclk_tick ;//desired timer interval, in ms, in my code, this is 1.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;PowerUp_Peripheral(PCTIMER0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//Set_Bit(&amp;amp;(LPC_SC-&amp;gt;PCLKSEL0), 2); Clear_Bit(&amp;amp;(LPC_SC-&amp;gt;PCLKSEL0), 3); //This part doesnt work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_TIM0-&amp;gt;PR = counter; //this will increment the TC everytime the timer-&amp;gt;interval expires.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_TIM0-&amp;gt;CTCR &amp;amp;= ~(0x3); //TIMER MODE.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and here's the part where I am 'waiting for a delay':&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void wait_for_timer(int whichTimer, uint32_t howLong) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;switch (whichTimer) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case (TIMER_0):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_TIM0-&amp;gt;TCR = 0x03;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_TIM0-&amp;gt;TCR &amp;amp;= ~(1 &amp;lt;&amp;lt; 1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;while (LPC_TIM0-&amp;gt;TC != howLong);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_TIM0-&amp;gt;TCR = 0x00;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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; .......&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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; .......&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So if I say:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;wait_for_timer(TIMER_0, (1000 * 60) ) ; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;with PCLK = 0 , (that is dividided by 4), the function returns after 1 minute.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;but with PCLK = 1 (that is divided by 1, and with all those parts of the code marked as this part doesn't work), the function returns after 4 minutes (looks like PCLK is still divided by 4).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any idea what am I doing wrong? &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I dont see this problem in RIT.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 16:39:16 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T16:39:16Z</dc:date>
    <item>
      <title>Timer Problem (LPC1768)</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Timer-Problem-LPC1768/m-p/522276#M4912</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by expressouser on Sat Jul 12 05:29:17 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi, &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am having some problem with TIMER, PCLK divider doesn't seem to work. Even if I set the pclk divider to a value different than that of the default value, it seems like the timer uses the default value.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is the part where I configure the timer:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;pclk_tick = ((double) 1/ ( SystemFrequency/4) ) * 1000; //ms per PCLK tick.&amp;nbsp; SystemFrequency is at 100MHz.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; // pclk_tick = ((double) 1/ ( SystemFrequency) ) * 1000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // this part doesnt work. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;counter = ((uint32_t) timer-&amp;gt;interval) / pclk_tick ;//desired timer interval, in ms, in my code, this is 1.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;PowerUp_Peripheral(PCTIMER0);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;//Set_Bit(&amp;amp;(LPC_SC-&amp;gt;PCLKSEL0), 2); Clear_Bit(&amp;amp;(LPC_SC-&amp;gt;PCLKSEL0), 3); //This part doesnt work.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_TIM0-&amp;gt;PR = counter; //this will increment the TC everytime the timer-&amp;gt;interval expires.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_TIM0-&amp;gt;CTCR &amp;amp;= ~(0x3); //TIMER MODE.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and here's the part where I am 'waiting for a delay':&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;void wait_for_timer(int whichTimer, uint32_t howLong) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;switch (whichTimer) {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case (TIMER_0):&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_TIM0-&amp;gt;TCR = 0x03;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_TIM0-&amp;gt;TCR &amp;amp;= ~(1 &amp;lt;&amp;lt; 1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;while (LPC_TIM0-&amp;gt;TC != howLong);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_TIM0-&amp;gt;TCR = 0x00;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;break;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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; .......&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&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; .......&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So if I say:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;wait_for_timer(TIMER_0, (1000 * 60) ) ; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;with PCLK = 0 , (that is dividided by 4), the function returns after 1 minute.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;but with PCLK = 1 (that is divided by 1, and with all those parts of the code marked as this part doesn't work), the function returns after 4 minutes (looks like PCLK is still divided by 4).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any idea what am I doing wrong? &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I dont see this problem in RIT.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 16:39:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Timer-Problem-LPC1768/m-p/522276#M4912</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T16:39:16Z</dc:date>
    </item>
  </channel>
</rss>

