<?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 Group Interrupt processing in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Group-Interrupt-processing/m-p/522596#M5232</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by jdupre on Thu Sep 17 10:54:14 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm not understanding how the interrupt processing is supposed to work with the Group Interrupt peripheral.&amp;nbsp; (I'm using the LPC15xx) :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have 4 GPIO push-button inputs, normally high.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have set up the Group Interrupt controller with the inputs active low, edge triggered, and ORed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When a button is pressed, the IRQ is triggered (and sometimes multiple times due to switch bounce).&amp;nbsp; When it is released, the IRQ is not triggered.&amp;nbsp; So far so good.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;However, if a button is pressed and held down, and then another button is pressed, the interrupt does not fire for the second button.&amp;nbsp; Why is this?&amp;nbsp; The group interrupt is configured to OR the inputs so that any input going low should fire the interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I then change the configuration so the inputs are active high.&amp;nbsp; I expected the interrupt to fire when a button was released (a transition from low to high).&amp;nbsp; However, the interrupt is triggered only once at startup.&amp;nbsp; After that, pressing of any button does nothing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It appears that any input being active "locks" the group interrupt mechanism.&amp;nbsp; Is that the intended behavior?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- Joe&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 16:41:52 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T16:41:52Z</dc:date>
    <item>
      <title>Group Interrupt processing</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Group-Interrupt-processing/m-p/522596#M5232</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by jdupre on Thu Sep 17 10:54:14 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm not understanding how the interrupt processing is supposed to work with the Group Interrupt peripheral.&amp;nbsp; (I'm using the LPC15xx) :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have 4 GPIO push-button inputs, normally high.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have set up the Group Interrupt controller with the inputs active low, edge triggered, and ORed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When a button is pressed, the IRQ is triggered (and sometimes multiple times due to switch bounce).&amp;nbsp; When it is released, the IRQ is not triggered.&amp;nbsp; So far so good.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;However, if a button is pressed and held down, and then another button is pressed, the interrupt does not fire for the second button.&amp;nbsp; Why is this?&amp;nbsp; The group interrupt is configured to OR the inputs so that any input going low should fire the interrupt.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I then change the configuration so the inputs are active high.&amp;nbsp; I expected the interrupt to fire when a button was released (a transition from low to high).&amp;nbsp; However, the interrupt is triggered only once at startup.&amp;nbsp; After that, pressing of any button does nothing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It appears that any input being active "locks" the group interrupt mechanism.&amp;nbsp; Is that the intended behavior?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- Joe&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 16:41:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Group-Interrupt-processing/m-p/522596#M5232</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T16:41:52Z</dc:date>
    </item>
    <item>
      <title>Re: Group Interrupt processing</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Group-Interrupt-processing/m-p/522597#M5233</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MikeSimmonds on Thu Sep 17 13:07:29 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I am not familiar with the 15xx family specifically, but a simple logic analysis should explain the first question ...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't know if you are familiar with logic gates, but imagine a 4-input AND gate.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Rest condition is 4 x high (1) in therefore high (1) out.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Press any one switch: 3 x high in and 1 x low in therefore low (0) out ... high to low transition&amp;nbsp; ... IRQ fired.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Press any other switch (keeping the first held): 2 x high and 2 x low in therefore low (0) out ... low remains low no transition ... no IRQ&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So yes; I think that is the expected behaviour.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The other question: at power on, all GPIOs go from low (un-powered) to high (the default is input with pull-up) so a transition is&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;seen and your IRQ fires.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Not sure about your group IRQ setup in the second case [polarity, combine-function] but possibly needs to be opposite&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;(in some sense) to what you have. Sorry, I don't know what options there are as I don't use 15xx and don't have that manual.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Maybe check "Boolean Logic" on wikipedia.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers, Mike&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 16:41:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Group-Interrupt-processing/m-p/522597#M5233</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T16:41:53Z</dc:date>
    </item>
    <item>
      <title>Re: Group Interrupt processing</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Group-Interrupt-processing/m-p/522598#M5234</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by jdupre on Thu Sep 17 16:26:46 MST 2015&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Yeah, I understand the logic of what I am seeing.&amp;nbsp; The documentation of the Group Interrupt implementation is sparse.&amp;nbsp; (A logic diagram in the manual would be helpful !)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I thought I'd try this new to me feature, but it doesn't seem that useful for my purposes.&amp;nbsp; Especially since there is no register to indicate which of the grouped GPIOs triggered the interrupt. (You have to read the GPIO port after the interrupt has fired-- which in some cases fails due to switch bounce.) &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Since I need to detect multiple quasi-simultaneous button press combinations, it will probably be easier to just use individual interrupts on the inputs.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;- Joe&amp;nbsp; &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 16:41:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Group-Interrupt-processing/m-p/522598#M5234</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T16:41:54Z</dc:date>
    </item>
  </channel>
</rss>

