<?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 data on pins changes when interrupt is used in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/data-on-pins-changes-when-interrupt-is-used/m-p/594444#M30963</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 Tue Dec 18 22:06:45 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I have code, which changes port pins by masking. ALso a timer interrupt on regular basis of 250us come &amp;amp; chnage pins of that port.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Problem is when both occur at same time, data on port gets corrupted.How to avoid this.&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 change()
{
&amp;nbsp; ........statemets
 .............
 LPC_GPIO-&amp;gt;MASK[1] = ~(0x00f0);&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;MPIN[1] = 0xa0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 LPC_GPIO-&amp;gt;MASK[1] = 0x00; 
 ..................
 .................
}

void interrupt_any()
{
 LPC_GPIO-&amp;gt;MASK[1] = ~(0x000f);
 LPC_GPIO-&amp;gt;MPIN[1] = 0x0a;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 LPC_GPIO-&amp;gt;MASK[1] = 0x00; 
}

&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:28:57 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T01:28:57Z</dc:date>
    <item>
      <title>data on pins changes when interrupt is used</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/data-on-pins-changes-when-interrupt-is-used/m-p/594444#M30963</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 Tue Dec 18 22:06:45 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I have code, which changes port pins by masking. ALso a timer interrupt on regular basis of 250us come &amp;amp; chnage pins of that port.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Problem is when both occur at same time, data on port gets corrupted.How to avoid this.&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 change()
{
&amp;nbsp; ........statemets
 .............
 LPC_GPIO-&amp;gt;MASK[1] = ~(0x00f0);&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;MPIN[1] = 0xa0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 LPC_GPIO-&amp;gt;MASK[1] = 0x00; 
 ..................
 .................
}

void interrupt_any()
{
 LPC_GPIO-&amp;gt;MASK[1] = ~(0x000f);
 LPC_GPIO-&amp;gt;MPIN[1] = 0x0a;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
 LPC_GPIO-&amp;gt;MASK[1] = 0x00; 
}

&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:28:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/data-on-pins-changes-when-interrupt-is-used/m-p/594444#M30963</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:28:57Z</dc:date>
    </item>
    <item>
      <title>Re: data on pins changes when interrupt is used</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/data-on-pins-changes-when-interrupt-is-used/m-p/594445#M30964</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by micrio on Wed Dec 19 05:53:05 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Sounds like you need to disable interrupts around the critical code.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Your code is not atomic so it needs to be protected.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:28:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/data-on-pins-changes-when-interrupt-is-used/m-p/594445#M30964</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:28:58Z</dc:date>
    </item>
  </channel>
</rss>

