<?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 Re: Spurious Interrupt on coldfire 5329 in ColdFire/68K Microcontrollers and Processors</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139273#M2156</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi Koen&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Can you confirm that you INTC0_IMRL is set to the value you want? I can understand why you have the I2C and UARTs unmasked, but you have unmasked all of the edge port interrupts. Did you mean&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;INTC0_IMRL = 0xa3fffffd ?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;A spurious interrupt exception occurs because the IMR has been changed between the time when an interrupt source has been recognised, and the time the core comes to determine the highest priority source at that level.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The IMR is used twice - during interrupt recognition, the interrupt controller uses it to determine if there are &lt;EM&gt;any&lt;/EM&gt; active requests. Then there is a short delay while the interrupt controller works out it the interrupt's level is greater than that of the SR. If it is, the interrupt's level is passed to the core. The core then uses the IMR to find the highest, unmasked source at that level. If the relevant bit in the IMR is changed from 0 to 1 before the final step, you get a spurious interrupt.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Are you using INTC0_IMRL to mask and unmask your interrupts a lot? If you use INTC0_IMRL in an ISR to mask and unmask your source you may get this problem.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Paul.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 09 Jul 2007 15:57:37 GMT</pubDate>
    <dc:creator>mccPaul</dc:creator>
    <dc:date>2007-07-09T15:57:37Z</dc:date>
    <item>
      <title>Spurious Interrupt on coldfire 5329</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139270#M2153</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I'am working on a coldfire CF5329. When I want to use the external interrupt IRQ1 a spurious interrupt occur.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;When I start the coldfire it works fine... no external interrupts. When I start my external device, it generates a interrupt (10µs low) every 500µs. Immediatelly after i switch my external device on, a spurious interrupt will occur.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I there a reason for this interrupt??&lt;/DIV&gt;&lt;DIV&gt;My IRQ1 level = 5 and my SR register is set to 0x3000&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Koen&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Jul 2007 20:54:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139270#M2153</guid>
      <dc:creator>Koen</dc:creator>
      <dc:date>2007-07-06T20:54:42Z</dc:date>
    </item>
    <item>
      <title>Re: Spurious Interrupt on coldfire 5329</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139271#M2154</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;FONT face="TimesNewRomanPSMT"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT face="TimesNewRomanPSMT"&gt;A spurious interrupt is generated because the CPU cannot determine the interrupt source. (see section 14.3.1.3 in the reference manual).&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT face="TimesNewRomanPSMT"&gt;You need to check if you have correctly set the Interrupt Mask Register (mcf5329 reference manual section 14.2.2 - in particular read the NOTE) and if you have correctly set the Interrupt Control Register for your interrupt (Section 14.2.9).&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT face="TimesNewRomanPSMT"&gt;Paul.&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT face="TimesNewRomanPSMT"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P align="left"&gt;&lt;FONT face="TimesNewRomanPSMT"&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Jul 2007 23:15:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139271#M2154</guid>
      <dc:creator>mccPaul</dc:creator>
      <dc:date>2007-07-06T23:15:28Z</dc:date>
    </item>
    <item>
      <title>Re: Spurious Interrupt on coldfire 5329</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139272#M2155</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I think my registers are set correctly for IRQ1 (source 1 intc0)&lt;/DIV&gt;&lt;DIV&gt;Global level -&amp;gt; SR = 0x3000&lt;/DIV&gt;&lt;DIV&gt;INTC0_ICR1 = 5;&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;&lt;/DIV&gt;&lt;DIV&gt;INTC0_IMRL = A3FFFF01;&lt;/DIV&gt;&lt;DIV&gt;GPIO_PAR_IRQ = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;With these settings a spurious interrupt will occur. Mostely i received the IRQ 4 a 5 times correctly but then, it fails...&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Koen&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Jul 2007 14:29:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139272#M2155</guid>
      <dc:creator>Koen</dc:creator>
      <dc:date>2007-07-09T14:29:45Z</dc:date>
    </item>
    <item>
      <title>Re: Spurious Interrupt on coldfire 5329</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139273#M2156</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi Koen&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Can you confirm that you INTC0_IMRL is set to the value you want? I can understand why you have the I2C and UARTs unmasked, but you have unmasked all of the edge port interrupts. Did you mean&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;INTC0_IMRL = 0xa3fffffd ?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;A spurious interrupt exception occurs because the IMR has been changed between the time when an interrupt source has been recognised, and the time the core comes to determine the highest priority source at that level.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The IMR is used twice - during interrupt recognition, the interrupt controller uses it to determine if there are &lt;EM&gt;any&lt;/EM&gt; active requests. Then there is a short delay while the interrupt controller works out it the interrupt's level is greater than that of the SR. If it is, the interrupt's level is passed to the core. The core then uses the IMR to find the highest, unmasked source at that level. If the relevant bit in the IMR is changed from 0 to 1 before the final step, you get a spurious interrupt.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Are you using INTC0_IMRL to mask and unmask your interrupts a lot? If you use INTC0_IMRL in an ISR to mask and unmask your source you may get this problem.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Paul.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Jul 2007 15:57:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139273#M2156</guid>
      <dc:creator>mccPaul</dc:creator>
      <dc:date>2007-07-09T15:57:37Z</dc:date>
    </item>
    <item>
      <title>Re: Spurious Interrupt on coldfire 5329</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139274#M2157</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The value of INTC0_IMRL is the value I want. All IRQs are connected with an FPGA. At this moment I only use IRQ 1 and IRQ 3, but I masked them all.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;During a ISR I never change the INTC0_IMRL state. The INTC0_IMRL is set at start-up, and after this set, the value is never changed.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Sometimes the IRQ works fine for a certain time, but at an unexpected moment (afters some ms) it generates an spurious interrupt.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Koen&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Jul 2007 17:46:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139274#M2157</guid>
      <dc:creator>Koen</dc:creator>
      <dc:date>2007-07-09T17:46:22Z</dc:date>
    </item>
    <item>
      <title>Re: Spurious Interrupt on coldfire 5329</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139275#M2158</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hi&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Are you using level or edge triggering for the edge port?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Could there be&amp;nbsp;some minor timing problem where you may have an interrupt signalled to the interrupt controller, but you are already dealing with a previous interrupt so the interrupt is cleared before the interrupt controller has identified it? In other words, you have two interrupts, but the ISR only executes one time and clears both interrupts.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I am guessing, but without seeing your code it is hard to do anything else.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Cheers,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Paul.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Jul 2007 01:53:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/Spurious-Interrupt-on-coldfire-5329/m-p/139275#M2158</guid>
      <dc:creator>mccPaul</dc:creator>
      <dc:date>2007-07-10T01:53:32Z</dc:date>
    </item>
  </channel>
</rss>

