<?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 LPC1788 - ENET_IRQHandler() in LPC Microcontrollers</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-ENET-IRQHandler/m-p/520153#M3510</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by LPC_Buzz on Wed Jul 17 14:53:08 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using NXP's EMAC Driver lpc177x_8x_emac.c.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;When a packet is received, in the ENET_IRQHandler() a callback function registred as Emac_ConfigStruct.pfnFrameReceive is called.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I spend a longer time processing the packet in this function (and implicitly in the interrupt routine) and during this a second packet is received, [u]it will not fire the interrupt again[/u]. The interrupt will be fired later, when the third packet arrives, and the EMAC driver will present actually the second packet as being ready to be processed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In this scenario, I will receive the packet number N only when packet N+1 arrives.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any idea how can I troubleshoot this? Making the interrupt routine faster works, but I need to make the system work in my scenario, with slower ENET_IRQHandler().&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:43:36 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:43:36Z</dc:date>
    <item>
      <title>LPC1788 - ENET_IRQHandler()</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-ENET-IRQHandler/m-p/520153#M3510</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by LPC_Buzz on Wed Jul 17 14:53:08 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm using NXP's EMAC Driver lpc177x_8x_emac.c.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;When a packet is received, in the ENET_IRQHandler() a callback function registred as Emac_ConfigStruct.pfnFrameReceive is called.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I spend a longer time processing the packet in this function (and implicitly in the interrupt routine) and during this a second packet is received, [u]it will not fire the interrupt again[/u]. The interrupt will be fired later, when the third packet arrives, and the EMAC driver will present actually the second packet as being ready to be processed.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In this scenario, I will receive the packet number N only when packet N+1 arrives.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Any idea how can I troubleshoot this? Making the interrupt routine faster works, but I need to make the system work in my scenario, with slower ENET_IRQHandler().&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:43:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-ENET-IRQHandler/m-p/520153#M3510</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:43:36Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1788 - ENET_IRQHandler()</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-ENET-IRQHandler/m-p/520154#M3511</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by wmues on Wed Jul 17 22:56:00 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;There are some possible solutions to this problem:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;a) do the packet processing not in this interrupt. Instead, fire an interrupt from software (you can use any non-used interrupt handler for this.) Give this "bottom half" interrupt a lower priority.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;b) put a do - while loop inside your interrupt handler, checking for a new packet before you leave the handler.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;regards&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Wolfgang&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:43:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-ENET-IRQHandler/m-p/520154#M3511</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:43:37Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1788 - ENET_IRQHandler()</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-ENET-IRQHandler/m-p/520155#M3512</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by LPC_Buzz on Thu Jul 18 15:26:35 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for your answer, Wolfgang.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The driver from NXP actually has a while loop inside the ENET_IRQHandler() which should do exactly what you suggested, but it doesn't work as expected.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Your ideea to handle the packet in another lower priority software interrupt is interesting, I will try it.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:43:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1788-ENET-IRQHandler/m-p/520155#M3512</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:43:38Z</dc:date>
    </item>
  </channel>
</rss>

