<?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 LPC1114: Sometimes can't clear interrupt flags in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1114-Sometimes-can-t-clear-interrupt-flags/m-p/538261#M5929</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by kamenik on Mon Oct 25 15:36:46 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello, all. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using LPCXpresso LPC1114 development board.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In my application I'm using all&amp;nbsp; timers implemented in, Partically, TMR32B1 is in use for software PWM implementation, PIO2_0 should be a PWM output, for example. This is part of my code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
void TIMER32_1_IRQHandler (void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((LPC_TMR32B1-&amp;gt;IR&amp;amp;0x1)==1)&amp;nbsp;&amp;nbsp;&amp;nbsp; //if MR0 interrupt occurs
&amp;nbsp;&amp;nbsp;&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_GPIO2-&amp;gt;DATA|=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; //Set PIO2_0 to high 
&amp;nbsp;&amp;nbsp;&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 ((LPC_TMR32B1-&amp;gt;IR&amp;amp;0x2)==2)&amp;nbsp;&amp;nbsp;&amp;nbsp; //if MR1 interrupt occurs
&amp;nbsp;&amp;nbsp;&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_GPIO2-&amp;gt;DATA&amp;amp;=~1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set PIO2_0 to low 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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_TMR32B1-&amp;gt;IR|=0b11;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This should clear interrupt flags, but
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //sometimes it isn't works
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;SPAN&gt;When I debug this in instruction step mode, I can see that instruction&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[B]str&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r1, #0][/B]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;clears&amp;nbsp; TMR32B1IR register(previously r1=0x40018000; r3=0x3; TMR32B1IR=0x3), but upon next instruction ([B]mov&amp;nbsp;&amp;nbsp;&amp;nbsp; sp, r7[/B])&amp;nbsp; TMR32B1IR returns to its previous value(0x3):confused:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;What I forgot? Apologize my terrible English. Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 23:11:49 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T23:11:49Z</dc:date>
    <item>
      <title>LPC1114: Sometimes can't clear interrupt flags</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1114-Sometimes-can-t-clear-interrupt-flags/m-p/538261#M5929</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by kamenik on Mon Oct 25 15:36:46 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello, all. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using LPCXpresso LPC1114 development board.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In my application I'm using all&amp;nbsp; timers implemented in, Partically, TMR32B1 is in use for software PWM implementation, PIO2_0 should be a PWM output, for example. This is part of my code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
void TIMER32_1_IRQHandler (void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((LPC_TMR32B1-&amp;gt;IR&amp;amp;0x1)==1)&amp;nbsp;&amp;nbsp;&amp;nbsp; //if MR0 interrupt occurs
&amp;nbsp;&amp;nbsp;&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_GPIO2-&amp;gt;DATA|=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; //Set PIO2_0 to high 
&amp;nbsp;&amp;nbsp;&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 ((LPC_TMR32B1-&amp;gt;IR&amp;amp;0x2)==2)&amp;nbsp;&amp;nbsp;&amp;nbsp; //if MR1 interrupt occurs
&amp;nbsp;&amp;nbsp;&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_GPIO2-&amp;gt;DATA&amp;amp;=~1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set PIO2_0 to low 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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_TMR32B1-&amp;gt;IR|=0b11;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This should clear interrupt flags, but
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //sometimes it isn't works
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;SPAN&gt;When I debug this in instruction step mode, I can see that instruction&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[B]str&amp;nbsp;&amp;nbsp;&amp;nbsp; r3, [r1, #0][/B]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;clears&amp;nbsp; TMR32B1IR register(previously r1=0x40018000; r3=0x3; TMR32B1IR=0x3), but upon next instruction ([B]mov&amp;nbsp;&amp;nbsp;&amp;nbsp; sp, r7[/B])&amp;nbsp; TMR32B1IR returns to its previous value(0x3):confused:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;What I forgot? Apologize my terrible English. Thanks.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:11:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1114-Sometimes-can-t-clear-interrupt-flags/m-p/538261#M5929</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:11:49Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1114: Sometimes can't clear interrupt flags</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1114-Sometimes-can-t-clear-interrupt-flags/m-p/538262#M5930</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by CodeRedSupport on Tue Oct 26 07:19:00 MST 2010&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I've not tried this on the hardware, but I suspect that your interrupts are being cleared, but as you single step you are then immediately encountering another interrupt. The key point is is the following from the LPC11xx user manual:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;HR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;STRONG&gt;Quote: &lt;/STRONG&gt;&lt;BR /&gt;During a debugging session, the System Tick Timer is automatically stopped whenever the CPU is stopped. Other peripherals are not affected.&lt;/SPAN&gt;&lt;HR /&gt;&lt;SPAN&gt; from section 20.6, Debug Notes, UM10398, Rev. 1 — 21 July 2010.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;CodeRedSupport&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:11:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/LPC1114-Sometimes-can-t-clear-interrupt-flags/m-p/538262#M5930</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:11:50Z</dc:date>
    </item>
  </channel>
</rss>

