<?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 MQX 4.2: Know interrupt ID from default ISR in MQX Software Solutions</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-4-2-Know-interrupt-ID-from-default-ISR/m-p/818158#M17963</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are using MQX 4.2.0 on a Kinetis MK64FX512VDC12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am trying to know which interruption is triggered by an action.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To do so, as a test, I installed a custom default ISR just before the action. My ISR is called but I cannot find how to get the interrupt ID (or &lt;EM&gt;vector&lt;/EM&gt; if I understand correclty) from the ISR itself.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new, courier, monospace;"&gt;_int_install_default_isr&lt;/SPAN&gt; takes a &lt;SPAN style="font-family: courier new, courier, monospace;"&gt;INT_ISR_FPTR&lt;/SPAN&gt; as a parameter, which is defined as&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;typedef&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;_CODE_PTR_ INT_ISR_FPTR&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From what I understand, the pointer we get as a parameter would be the one given with the custom ISR, if I had set it using &lt;SPAN style="font-family: courier new, courier, monospace;"&gt;_int_install_isr&lt;/SPAN&gt; for example. If so, no information related to the current interruption should be available there.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there any way, from an ISR, to know what interrupt it is currently reacting to?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Rudy&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 19 Dec 2018 21:17:08 GMT</pubDate>
    <dc:creator>rvigneault</dc:creator>
    <dc:date>2018-12-19T21:17:08Z</dc:date>
    <item>
      <title>MQX 4.2: Know interrupt ID from default ISR</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-4-2-Know-interrupt-ID-from-default-ISR/m-p/818158#M17963</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are using MQX 4.2.0 on a Kinetis MK64FX512VDC12.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am trying to know which interruption is triggered by an action.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To do so, as a test, I installed a custom default ISR just before the action. My ISR is called but I cannot find how to get the interrupt ID (or &lt;EM&gt;vector&lt;/EM&gt; if I understand correclty) from the ISR itself.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new, courier, monospace;"&gt;_int_install_default_isr&lt;/SPAN&gt; takes a &lt;SPAN style="font-family: courier new, courier, monospace;"&gt;INT_ISR_FPTR&lt;/SPAN&gt; as a parameter, which is defined as&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&lt;SPAN class="keyword token"&gt;typedef&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;_CODE_PTR_ INT_ISR_FPTR&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword token"&gt;void&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From what I understand, the pointer we get as a parameter would be the one given with the custom ISR, if I had set it using &lt;SPAN style="font-family: courier new, courier, monospace;"&gt;_int_install_isr&lt;/SPAN&gt; for example. If so, no information related to the current interruption should be available there.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there any way, from an ISR, to know what interrupt it is currently reacting to?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Rudy&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 19 Dec 2018 21:17:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-4-2-Know-interrupt-ID-from-default-ISR/m-p/818158#M17963</guid>
      <dc:creator>rvigneault</dc:creator>
      <dc:date>2018-12-19T21:17:08Z</dc:date>
    </item>
    <item>
      <title>Re: MQX 4.2: Know interrupt ID from default ISR</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-4-2-Know-interrupt-ID-from-default-ISR/m-p/818159#M17964</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A _jive_internal="true" data-content-finding="Community" data-userid="314568" data-username="rvigneault" href="https://community.nxp.com/people/rvigneault"&gt;Rudy&lt;/A&gt;:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would suggest you refer to function _int_unexpected_isr (mqx/source/psp/cortex_m/int_unx.c)&lt;/P&gt;&lt;P&gt;I hope it helps.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void _int_unexpected_isr&lt;BR /&gt;(&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void&amp;nbsp;&amp;nbsp; *parameter&lt;BR /&gt;)&lt;BR /&gt;{ /* Body */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; KERNEL_DATA_STRUCT_PTR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kernel_data;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TD_STRUCT_PTR&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; td_ptr;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _GET_KERNEL_DATA(kernel_data);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; td_ptr = kernel_data-&amp;gt;ACTIVE_PTR;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#if 0&lt;BR /&gt;#if !MQX_LITE_VERSION_NUMBER&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t&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; psp, msp, i;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("\n\r*** UNHANDLED INTERRUPT ***\n\r");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Vector #: 0x%02x Task Id: 0x%0x Td_ptr 0x%x\n\r",&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (uint32_t)parameter, (uint32_t)td_ptr-&amp;gt;TASK_ID, (uint32_t)td_ptr);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; psp = __get_PSP();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msp = __get_MSP();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("PC: 0x%08x LR: 0x%08x PSP: 0x%08x MSP: 0x%08x PSR: 0x%08x\n\r", __get_PC(), __get_LR(), psp, msp, __get_PSR());&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("\n\r\n\rMemory dump:\n\r");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; 32; i += 4) {&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; printf("0x%08x : 0x%08x 0x%08x 0x%08x 0x%08x\n\r", psp + i * 4, ((uint32_t*)psp)[i], ((uint32_t*)psp)[i + 1], ((uint32_t*)psp)[i + 2], ((uint32_t*)psp)[i + 3]);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("\n\r\n\rMemory dump:\n\r");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; 32; i += 4) {&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; printf("0x%08x : 0x%08x 0x%08x 0x%08x 0x%08x\n\r", msp + i * 4, ((uint32_t*)msp)[i], ((uint32_t*)msp)[i + 1], ((uint32_t*)msp)[i + 2], ((uint32_t*)msp)[i + 3]);&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;BR /&gt;#endif&lt;BR /&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _INT_DISABLE();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (td_ptr-&amp;gt;STATE != UNHANDLED_INT_BLOCKED) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; td_ptr-&amp;gt;STATE = UNHANDLED_INT_BLOCKED;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; td_ptr-&amp;gt;INFO&amp;nbsp; = (_mqx_uint)parameter;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _QUEUE_UNLINK(td_ptr);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } /* Endif */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; _INT_ENABLE();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Daniel&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Dec 2018 07:33:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-4-2-Know-interrupt-ID-from-default-ISR/m-p/818159#M17964</guid>
      <dc:creator>danielchen</dc:creator>
      <dc:date>2018-12-21T07:33:03Z</dc:date>
    </item>
    <item>
      <title>Re: MQX 4.2: Know interrupt ID from default ISR</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-4-2-Know-interrupt-ID-from-default-ISR/m-p/818160#M17965</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Daniel,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Based on _int_unexpected_isr, I got what I needed!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks a lot!&lt;/P&gt;&lt;P&gt;Rudy&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Jan 2019 15:35:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/MQX-4-2-Know-interrupt-ID-from-default-ISR/m-p/818160#M17965</guid>
      <dc:creator>rvigneault</dc:creator>
      <dc:date>2019-01-17T15:35:51Z</dc:date>
    </item>
  </channel>
</rss>

