<?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: How to determine which vector caused the interrupt? in ColdFire/68K Microcontrollers and Processors</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/How-to-determine-which-vector-caused-the-interrupt/m-p/192250#M8403</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;Hi Wolf,&lt;BR /&gt;&lt;BR /&gt;basically it's possible. For this you would have to check the value of the exception stack frame. The&amp;nbsp; interrupt&amp;nbsp; vector is&amp;nbsp; encoded&amp;nbsp; there.&lt;BR /&gt;For more information see Coldfire Family Programmer's Manual&amp;nbsp; (Ch.&amp;nbsp; 11)&amp;nbsp; or the&amp;nbsp; user manual of your processor.&lt;BR /&gt;&lt;BR /&gt;HTH&lt;BR /&gt;&amp;nbsp; stzari&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 21 Feb 2008 20:26:19 GMT</pubDate>
    <dc:creator>stzari</dc:creator>
    <dc:date>2008-02-21T20:26:19Z</dc:date>
    <item>
      <title>How to determine which vector caused the interrupt?</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/How-to-determine-which-vector-caused-the-interrupt/m-p/192249#M8402</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;DIV&gt;I know this is not the best example but go with me on this.&amp;nbsp; If i had all vectors point to the same interrupt function. is there away inside to determine whcih vector was the cause?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;thanks&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Feb 2008 02:54:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/How-to-determine-which-vector-caused-the-interrupt/m-p/192249#M8402</guid>
      <dc:creator>WOLF</dc:creator>
      <dc:date>2008-02-21T02:54:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to determine which vector caused the interrupt?</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/How-to-determine-which-vector-caused-the-interrupt/m-p/192250#M8403</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;Hi Wolf,&lt;BR /&gt;&lt;BR /&gt;basically it's possible. For this you would have to check the value of the exception stack frame. The&amp;nbsp; interrupt&amp;nbsp; vector is&amp;nbsp; encoded&amp;nbsp; there.&lt;BR /&gt;For more information see Coldfire Family Programmer's Manual&amp;nbsp; (Ch.&amp;nbsp; 11)&amp;nbsp; or the&amp;nbsp; user manual of your processor.&lt;BR /&gt;&lt;BR /&gt;HTH&lt;BR /&gt;&amp;nbsp; stzari&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Feb 2008 20:26:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/How-to-determine-which-vector-caused-the-interrupt/m-p/192250#M8403</guid>
      <dc:creator>stzari</dc:creator>
      <dc:date>2008-02-21T20:26:19Z</dc:date>
    </item>
    <item>
      <title>Re: How to determine which vector caused the interrupt?</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/How-to-determine-which-vector-caused-the-interrupt/m-p/192251#M8404</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hello,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;The Vector information is stored in the 'Exception Frame Structure'&lt;/DIV&gt;&lt;DIV&gt;You can use one Generic Interrupt asm Handler to save the 'Exception Frame Address' and call a C Function to manage Vector.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;//---------------------------------------------------------------------------------------------------------------------------------&lt;/DIV&gt;&lt;DIV&gt;__interrupt__ void&amp;nbsp;&amp;nbsp; ISR_Asm_User(void);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;_ISR_Asm_User:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -60(SP),SP&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;Stack for 'movem'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; movem.l D0-D7/A0-A6,(SP)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Save Registers&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pea.l&amp;nbsp;&amp;nbsp; 60(SP)&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; // Push 'Exception Frame Address'&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jsr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _IRQ_Interruption&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;// Generic C Fonction&amp;nbsp;IRQ_Interruption(void *ExceptionFrame)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; movem.l 4(SP),D0-D7/A0-A6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Restore Registers&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 64(SP),SP&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; // Restore SP&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rte&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;//---------------------------------------------------------------------------------------------------------------------------------&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void IRQ_Interruption(void *ExceptionFrame_P)&lt;BR /&gt;{&lt;BR /&gt;register INT Vector_L;&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Extract Vector Number&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vector_L = MCF5XXX_RD_SF_VECTOR(ExceptionFrame_P);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Manage Vector&lt;/DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Vector_L &amp;lt; NB_MAX_VECTORS)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (TableIRQ_G[Vector_L].Procedure != NULL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Call Vector Procedure(void *Parameters) from your&amp;nbsp;Own IRQ Table&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (TableIRQ_G[Vector_L].Procedure)(TableIRQ_G[Vector_L].Parameters);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;//---------------------------------------------------------------------------------------------------------------------------------&lt;/DIV&gt;&lt;BR /&gt;I Hope this helps..&lt;BR /&gt;&lt;BR /&gt;Bye&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;&amp;lt; Freescale MCF5234/35 with CodeWarrior 6.2 &amp;gt;&amp;gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Feb 2008 22:00:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/How-to-determine-which-vector-caused-the-interrupt/m-p/192251#M8404</guid>
      <dc:creator>Arev</dc:creator>
      <dc:date>2008-02-21T22:00:14Z</dc:date>
    </item>
    <item>
      <title>Re: How to determine which vector caused the interrupt?</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/How-to-determine-which-vector-caused-the-interrupt/m-p/192252#M8405</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Thanks,&amp;nbsp;&amp;nbsp;&amp;nbsp; Gives me a Good start.&amp;nbsp; sample code was greaty apreciated.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Feb 2008 05:31:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/How-to-determine-which-vector-caused-the-interrupt/m-p/192252#M8405</guid>
      <dc:creator>WOLF</dc:creator>
      <dc:date>2008-02-22T05:31:22Z</dc:date>
    </item>
  </channel>
</rss>

