<?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: Setjmp ( return from ISR ) in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440260#M25742</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Norm,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am studying the manual, but this hidden code to me.&lt;/P&gt;&lt;P&gt;return to another location is easy, the problem is that disables all interrupts.&lt;/P&gt;&lt;P&gt;I need only solve the problems (Disable all ISR).&lt;/P&gt;&lt;P&gt;still I know very little of ARM.&lt;/P&gt;&lt;P&gt;thanks,&lt;/P&gt;&lt;P&gt;Carlos.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 30 Jun 2015 19:45:21 GMT</pubDate>
    <dc:creator>CCandido</dc:creator>
    <dc:date>2015-06-30T19:45:21Z</dc:date>
    <item>
      <title>Setjmp ( return from ISR )</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440258#M25740</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;using setjmp, I need it to do the longjmp, returning from a ISR (systick 1ms). lonjmp when it happens the first time, it disables all ISR.&lt;/P&gt;&lt;P&gt;I need all ISR, working properly. my qustion.&lt;/P&gt;&lt;P&gt;KDS300&lt;/P&gt;&lt;P&gt;FRDM-K20D50&lt;/P&gt;&lt;P&gt;//-------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;PE_ISR(_Systick)&amp;nbsp; // function in Flash&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;&amp;nbsp;&amp;nbsp; if( ++ dly == 200){&lt;/P&gt;&lt;P&gt;&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; dly = 0;&lt;/P&gt;&lt;P&gt;&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; spt ++;&lt;/P&gt;&lt;P&gt;&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; LED1_Neg();&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(&amp;nbsp;&amp;nbsp;&amp;nbsp; ! Exit_test ){&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&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; Exit = TRUE;&amp;nbsp; // exit RAM execute&lt;/P&gt;&lt;P&gt;&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; Exit_test = TRUE;&amp;nbsp; // run = 1&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&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; Exit = FALSE;&lt;/P&gt;&lt;P&gt;&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; return;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( Exit ){&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;&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; // case, error or watchdog timer, in code execute ram.&lt;/P&gt;&lt;P&gt;&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; longjmp(CPU_STD , -1 );&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; restored cpu,&amp;nbsp;&amp;nbsp; return to&amp;nbsp; __ISR_times_1oous_main&lt;/P&gt;&lt;P&gt;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // in ASM list( bl&amp;nbsp;&amp;nbsp;&amp;nbsp; longjmp ) not ( BX LR ) to RTI&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-337401"&gt;K20_Setjmp_isr.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Jun 2015 15:35:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440258#M25740</guid>
      <dc:creator>CCandido</dc:creator>
      <dc:date>2015-06-29T15:35:08Z</dc:date>
    </item>
    <item>
      <title>Re: Setjmp ( return from ISR )</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440259#M25741</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Have you downloaded&amp;nbsp; the &lt;A&gt;&lt;/A&gt;Cortex&lt;SPAN class="trademark"&gt;&lt;/SPAN&gt;™-M4 Devices Generic User Guide form the ARM.com website. It explains the things you need to do to get out of interrupt mode. It's in section 2.3.7 of that document.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The&amp;nbsp; there's only a few commands that will release you from the interrupt. The bl command does not release you from interrupt mode. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Jun 2015 20:36:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440259#M25741</guid>
      <dc:creator>ndavies</dc:creator>
      <dc:date>2015-06-29T20:36:38Z</dc:date>
    </item>
    <item>
      <title>Re: Setjmp ( return from ISR )</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440260#M25742</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Norm,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am studying the manual, but this hidden code to me.&lt;/P&gt;&lt;P&gt;return to another location is easy, the problem is that disables all interrupts.&lt;/P&gt;&lt;P&gt;I need only solve the problems (Disable all ISR).&lt;/P&gt;&lt;P&gt;still I know very little of ARM.&lt;/P&gt;&lt;P&gt;thanks,&lt;/P&gt;&lt;P&gt;Carlos.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 30 Jun 2015 19:45:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440260#M25742</guid>
      <dc:creator>CCandido</dc:creator>
      <dc:date>2015-06-30T19:45:21Z</dc:date>
    </item>
    <item>
      <title>Re: Setjmp ( return from ISR )</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440261#M25743</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;When you enter the interrupt the M4 pushes all its registers onto the stack, the M4 then enters "HANDLER" mode. it starts running your ISR. in handler mode all interrupts of a lower or equal priority are blocked.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Only a few commands will let you exit "HANDLER" mode. In your code you are doing a branch long. By doing a branch long the M4 thinks you are still in "HANDLER" mode and continues to block lower level interrupts.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The only commands that will let you leave "HANDLER" mode and have the interrupts enabled are listed in section 2.3.7 of the manual.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From section 2.3.7&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Exception return&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Exception return occurs when the processor is in Handler mode and executes one of the &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;following instructions to load the EXC_RETURN value into the PC:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; an LDM or POP instruction that loads the PC&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; an LDR instruction with PC as the destination&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a BX instruction using any register&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To get interrupts back on and the data that was pushed onto the stack, off the stack, you must run one of the commands listed in the copied section. Basically you must push the EXC_RETURN code into the program counter.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 30 Jun 2015 20:23:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440261#M25743</guid>
      <dc:creator>ndavies</dc:creator>
      <dc:date>2015-06-30T20:23:09Z</dc:date>
    </item>
    <item>
      <title>Re: Setjmp ( return from ISR )</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440262#M25744</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Norm,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;longjmp not run ok.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;see code Disassembly KDS.&lt;/P&gt;&lt;P&gt;---------------------------------------------&lt;/P&gt;&lt;P&gt;PE_ISR(_Systick)&amp;nbsp; // function in Flash&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp; r0, sp&lt;/P&gt;&lt;P&gt;&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; bic&amp;nbsp;&amp;nbsp;&amp;nbsp; r1, r0, #7&lt;/P&gt;&lt;P&gt;&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; mov&amp;nbsp;&amp;nbsp;&amp;nbsp; sp, r1&lt;/P&gt;&lt;P&gt;&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&amp;nbsp;&amp;nbsp;&amp;nbsp; {r0, r3, r7, lr}&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; blablabla.....my test here&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp; sp, r7&lt;/P&gt;&lt;P&gt;&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; pop&amp;nbsp;&amp;nbsp;&amp;nbsp; {r0, r3, r7, lr}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp; sp, r0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bx&amp;nbsp;&amp;nbsp;&amp;nbsp; lr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit&lt;/P&gt;&lt;P&gt;-----------------------------------------------&lt;/P&gt;&lt;P&gt;do my testing width bx,PC, isr Disable. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;tks,&lt;/P&gt;&lt;P&gt;Carlos.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Jul 2015 19:36:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440262#M25744</guid>
      <dc:creator>CCandido</dc:creator>
      <dc:date>2015-07-01T19:36:46Z</dc:date>
    </item>
    <item>
      <title>Re: Setjmp ( return from ISR )</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440263#M25745</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You are correct , It doesn't work. There is no way to make this work the way you are doing it. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You need to find another way to do it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What you are trying to do is difficult and I don't have enough time to guide you through it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, Here are some hints as to how I would do it:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You need to look at using multitasking techniques. You will need to use both the handler stack pointer and the thread stack pointer. You will need to create at least a couple of stack frames. You will need to change the thread stack pointer to point to different stack frames in the interrupt.&amp;nbsp; By modifying the thread stack pointer before you exit the ISR you should be able to get the ISR to return to the place you want.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Jul 2015 20:16:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440263#M25745</guid>
      <dc:creator>ndavies</dc:creator>
      <dc:date>2015-07-01T20:16:06Z</dc:date>
    </item>
    <item>
      <title>Re: Setjmp ( return from ISR )</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440264#M25746</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Norm,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I thought this way would be easier than multi tasks, because I need to run programs, not just a function.&lt;/P&gt;&lt;P&gt;I will need then to develop two tasks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks for your help.&lt;/P&gt;&lt;P&gt;Carlos.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Jul 2015 00:12:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440264#M25746</guid>
      <dc:creator>CCandido</dc:creator>
      <dc:date>2015-07-02T00:12:35Z</dc:date>
    </item>
    <item>
      <title>Re: Setjmp ( return from ISR )</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440265#M25747</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think my past post &lt;A href="https://community.nxp.com/message/527123"&gt;Re: Stack Pointer / Program counter&lt;/A&gt; will help you.&lt;/P&gt;&lt;P&gt;Your experiment under no interrupts will not go well because LR contains EXC_RETURN code and the true return address exists on the stack.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Yasuhiko Koumoto.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Jul 2015 01:11:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440265#M25747</guid>
      <dc:creator>yasuhikokoumoto</dc:creator>
      <dc:date>2015-07-02T01:11:13Z</dc:date>
    </item>
    <item>
      <title>Re: Setjmp ( return from ISR )</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440266#M25748</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN lang="en"&gt;&lt;SPAN class="hps"&gt;Hi Koumoto,&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="en"&gt;&lt;SPAN class="hps"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="en"&gt;&lt;SPAN class="hps"&gt;I tested&lt;/SPAN&gt; &lt;SPAN class="hps"&gt;your code&lt;/SPAN&gt;, it returns &lt;SPAN class="hps"&gt;yes&lt;/SPAN&gt;, however &lt;SPAN class="hps"&gt;disables all&lt;/SPAN&gt; &lt;SPAN class="hps"&gt;ISR&lt;/SPAN&gt;.&lt;BR /&gt; &lt;SPAN class="hps"&gt;for this reason&lt;/SPAN&gt; &lt;SPAN class="hps"&gt;I tried to make&lt;/SPAN&gt; &lt;SPAN class="hps"&gt;setjmp&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="en"&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="en"&gt;&lt;SPAN&gt;Carlos.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Jul 2015 01:36:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440266#M25748</guid>
      <dc:creator>CCandido</dc:creator>
      <dc:date>2015-07-02T01:36:47Z</dc:date>
    </item>
    <item>
      <title>Re: Setjmp ( return from ISR )</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440267#M25749</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Carlos. if you need to run multiple programs you definitely need to take the multitasking route. Pulling control back from a spawned program that has failed requires multitasking techniques. There's no way around it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Be thankful the M4 core didn't allow you implement your algorithm. Your code would have created an unstable program. Every time you detected an error and took the long jump, the ISR would have stranded bytes on your stack. You would have the equivalent of a stack memory leak.&amp;nbsp; After time this would create a stack failure. It would have been very difficult to find.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Norm&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Jul 2015 12:10:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Setjmp-return-from-ISR/m-p/440267#M25749</guid>
      <dc:creator>ndavies</dc:creator>
      <dc:date>2015-07-02T12:10:49Z</dc:date>
    </item>
  </channel>
</rss>

