<?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のトピックProblem in timer 32 code</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Problem-in-timer-32-code/m-p/566292#M18376</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by aamir ali on Sun Jan 06 04:31:33 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I wrote code fro MAT0 &amp;amp; MAT1 if imer32. At match of MR1 timer there will be int only while at MAT0 match timer will be rest &amp;amp; TC will be zero.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In int routine I set two diff pins.Problems is both pins gets sets &amp;amp; clear at same time.&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;
volatile uint32_t timer_int_reg =0;

void CT32B0_IRQHandler(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; timer_int_reg = LPC_CT32B0-&amp;gt;IR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(timer_int_reg &amp;amp; 0x02 == 0x02)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;IR = 0x02;&amp;nbsp;&amp;nbsp; /* Clear MAT0.1 MATinterrupt flag */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO-&amp;gt;NOT[0] = 0x00040000;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(timer_int_reg &amp;amp; 0x01 == 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; LPC_CT32B0-&amp;gt;IR = 0x01;&amp;nbsp;&amp;nbsp; /* Clear MAT0.0 MATinterrupt flag */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO-&amp;gt;NOT[0] = 0x00080000;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; 


}



int main(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_18 = 0x00000080;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // pin for checking timings
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO-&amp;gt;DIR[0] |= 0x00040000;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_19 = 0x00000080;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // pin for checking timings
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO-&amp;gt;DIR[0] |= 0x00080000;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_SetPriority(CT32B0_IRQn,0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Default priority group 0, can be 0(highest) - 31(lowest) */
&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(CT32B0_IRQn);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable 32-bit Timer0 (CT32B0) Interrupt */

&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL&amp;nbsp; |= (1&amp;lt;&amp;lt;9);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //enable clock 
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;TCR = 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* reset timer */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;PR&amp;nbsp; = 99;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //prescaler value
LPC_CT32B0-&amp;gt;MR0 = 18000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Total delay = MR0 * (PR + 1) * Inst cycle , i.e 0x1c20 * (99+1) * (1/72Mhz)
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;MR1 = 7200; 
LPC_CT32B0-&amp;gt;IR =&amp;nbsp; 0x003f;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //disable interrupt initially
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;MCR = 0x0003 | 0x08;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //reset on match i.e TC will be zero, &amp;amp; interrupt on match
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;TCR = 0x01;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 

&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __NOP();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if(me &amp;gt; 1000)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; LPC_CT32B0-&amp;gt;TCR = 0x00;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}

&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 22:24:15 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T22:24:15Z</dc:date>
    <item>
      <title>Problem in timer 32 code</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Problem-in-timer-32-code/m-p/566292#M18376</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by aamir ali on Sun Jan 06 04:31:33 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I wrote code fro MAT0 &amp;amp; MAT1 if imer32. At match of MR1 timer there will be int only while at MAT0 match timer will be rest &amp;amp; TC will be zero.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In int routine I set two diff pins.Problems is both pins gets sets &amp;amp; clear at same time.&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;
volatile uint32_t timer_int_reg =0;

void CT32B0_IRQHandler(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; timer_int_reg = LPC_CT32B0-&amp;gt;IR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(timer_int_reg &amp;amp; 0x02 == 0x02)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;IR = 0x02;&amp;nbsp;&amp;nbsp; /* Clear MAT0.1 MATinterrupt flag */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO-&amp;gt;NOT[0] = 0x00040000;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; } 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(timer_int_reg &amp;amp; 0x01 == 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; LPC_CT32B0-&amp;gt;IR = 0x01;&amp;nbsp;&amp;nbsp; /* Clear MAT0.0 MATinterrupt flag */
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO-&amp;gt;NOT[0] = 0x00080000;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; 


}



int main(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_18 = 0x00000080;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // pin for checking timings
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO-&amp;gt;DIR[0] |= 0x00040000;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_IOCON-&amp;gt;PIO0_19 = 0x00000080;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // pin for checking timings
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_GPIO-&amp;gt;DIR[0] |= 0x00080000;&amp;nbsp; 

&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_SetPriority(CT32B0_IRQn,0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Default priority group 0, can be 0(highest) - 31(lowest) */
&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(CT32B0_IRQn);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enable 32-bit Timer0 (CT32B0) Interrupt */

&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SYSCON-&amp;gt;SYSAHBCLKCTRL&amp;nbsp; |= (1&amp;lt;&amp;lt;9);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //enable clock 
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;TCR = 0x02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* reset timer */
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;PR&amp;nbsp; = 99;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //prescaler value
LPC_CT32B0-&amp;gt;MR0 = 18000;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Total delay = MR0 * (PR + 1) * Inst cycle , i.e 0x1c20 * (99+1) * (1/72Mhz)
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;MR1 = 7200; 
LPC_CT32B0-&amp;gt;IR =&amp;nbsp; 0x003f;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //disable interrupt initially
&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;MCR = 0x0003 | 0x08;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //reset on match i.e TC will be zero, &amp;amp; interrupt on match
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_CT32B0-&amp;gt;TCR = 0x01;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 

&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __NOP();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //if(me &amp;gt; 1000)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; LPC_CT32B0-&amp;gt;TCR = 0x00;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
}

&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:24:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Problem-in-timer-32-code/m-p/566292#M18376</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:24:15Z</dc:date>
    </item>
    <item>
      <title>Re: Problem in timer 32 code</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Problem-in-timer-32-code/m-p/566293#M18377</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by vasanth on Sun Jan 06 11:15:34 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Use the debugger to examine the value of IR register within interrupt&amp;nbsp; handler. Verify the values of all the registers you use before enabling&amp;nbsp; the timer.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I would suggest to start by toggling a single pin using either MR0 or MR1. If it runs fine, then try toggling two pins.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope it helps.:)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:24:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Problem-in-timer-32-code/m-p/566293#M18377</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:24:16Z</dc:date>
    </item>
    <item>
      <title>Re: Problem in timer 32 code</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Problem-in-timer-32-code/m-p/566294#M18378</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by aamir ali on Mon Jan 07 02:54:06 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I had checked it earlier. Independently both match registers worked.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;But when combioned this don't work. Both pins switch states at same time inspite of diff match value s&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:24:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Problem-in-timer-32-code/m-p/566294#M18378</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:24:17Z</dc:date>
    </item>
    <item>
      <title>Re: Problem in timer 32 code</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Problem-in-timer-32-code/m-p/566295#M18379</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by gbm on Mon Jan 07 04:45:01 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;The MAT0 interrupt is not enabled in your code, only MAT1 causes interrupt and it looks like both flags are set at that time, so both LEDs are set at that time. The only strange thing is: why interrupt cause flag is set for MAT0 if MAT0 interrupt is not enabled? This is something not described in the manual as far as I remember.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 22:24:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Problem-in-timer-32-code/m-p/566295#M18379</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T22:24:17Z</dc:date>
    </item>
  </channel>
</rss>

