<?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: FreeRTOS in tickless mode and LLS3 in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816464#M49490</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;I think this is just not correct implementation of wait mode in&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;vPortSuppressTicksAndSleep() function.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;It is done like this:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;__asm volatile( "dsb" ::: "memory" );&lt;BR /&gt; __asm volatile( "wfi" );&lt;BR /&gt; __asm volatile( "isb" );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;but should be like this for have clean up from all previous&amp;nbsp; low power modes:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt; /* Wait mode. */&lt;BR /&gt; SMC_PreEnterWaitModes();&lt;BR /&gt; SMC_SetPowerModeWait(SMC);&lt;BR /&gt; SMC_PostExitWaitModes();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Deep sleep bit should be cleaned&amp;nbsp; becouse it is set in LLS3 mode.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt; /* configure Normal Wait mode */&lt;BR /&gt; SCB-&amp;gt;SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_Msk;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Is this right workaround ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Eugene&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 08 Aug 2018 09:05:55 GMT</pubDate>
    <dc:creator>EugeneHiihtaja</dc:creator>
    <dc:date>2018-08-08T09:05:55Z</dc:date>
    <item>
      <title>FreeRTOS in tickless mode and LLS3</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816457#M49483</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;I have taken FreeRTOS example from SDK and configure it in tickless mode where Systick timer only is used as clock source.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Everything works fine in tick and tickless configurations.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After that I have put MCU to LLS3 low power mode and wakeup it to RUN mode back be using external LLWU enabled GPIO pin. Typical LLWU clean up is executed ( in interrupt handler ) and PLL lock ( MGC in PEE mode) are executed&lt;/P&gt;&lt;P&gt;as first code after wake up.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Wait for PLL lock. MCG in PEE mode in RUN. */&lt;BR /&gt; while (!(kMCG_Pll0LockFlag &amp;amp; CLOCK_GetStatusFlags()))&lt;BR /&gt; {&lt;BR /&gt; }&lt;BR /&gt; CLOCK_SetPeeMode();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Everything works fine in RTOS use Systick and tickless mode is disabled.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But in tickless mode, systick timer is not recovered and task scheduler dosn't work any more.&lt;/P&gt;&lt;P&gt;ApplicationTickHook() is not called anymore and execution is not continued.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can it be so that fsl_tickless_systick.c is implemented in way what block LLS3 recovering some how ?&lt;/P&gt;&lt;P&gt;It is just not taken in account&amp;nbsp; ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you suggest what fix need to be done if RTOS can continue execution after LLS3 in Tickless mode ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Eugene&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 06 Aug 2018 09:55:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816457#M49483</guid>
      <dc:creator>EugeneHiihtaja</dc:creator>
      <dc:date>2018-08-06T09:55:20Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS in tickless mode and LLS3</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816458#M49484</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eugene,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; If before you enter the LLS mode in the PEE mode, after wake up, the clock mode will turned to the PBE mode, so if you want to work at the PEE mode, you need to do the PBE-PEE clock mode convert, do you do this?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; After you configure the PEE mode, you also can reconfigure the systick, then check whether your FreeRTOS works or not?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Kerry&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>Tue, 07 Aug 2018 06:35:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816458#M49484</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2018-08-07T06:35:41Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS in tickless mode and LLS3</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816459#M49485</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kerry !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1.&lt;/P&gt;&lt;P&gt;After wakeup , the first code what is executed is put&amp;nbsp; MCG to PEE mode back.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;/* Wait for PLL lock. MCG in PEE mode in RUN. */&lt;/SPAN&gt;&lt;BR style="color: #51626f; background-color: #ffffff;" /&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;while (!(kMCG_Pll0LockFlag &amp;amp; CLOCK_GetStatusFlags()))&lt;/SPAN&gt;&lt;BR style="color: #51626f; background-color: #ffffff;" /&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;{&lt;/SPAN&gt;&lt;BR style="color: #51626f; background-color: #ffffff;" /&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;}&lt;/SPAN&gt;&lt;BR style="color: #51626f; background-color: #ffffff;" /&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;CLOCK_SetPeeMode();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;2. In normal mode when Systick generated every tick -&amp;gt; no need any systick reinitialization , it is resumed and continue with the same clock&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; &amp;nbsp; as before going to LLS3 mode ( After PLL lock and set to PEE mode ).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; Problem coming in TickLess mode only where NXP proprietary code is taken in use&amp;nbsp;&lt;SPAN&gt;fsl_tickless_systick.c&amp;nbsp; .&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;Any simple reenabling of SystickTimer and Interrupts dosn't help. Some values in your framework is used for calculate sleep compenstation&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;and all Systick registers and Aux variables should be reinitialized in smart way.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;Is any idea how to resume freeRTOS from LLS3 when it configured in Tickless mode ?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;Regards,&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;SPAN&gt;Eugene&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Aug 2018 06:53:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816459#M49485</guid>
      <dc:creator>EugeneHiihtaja</dc:creator>
      <dc:date>2018-08-07T06:53:57Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS in tickless mode and LLS3</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816460#M49486</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eugene,&lt;/P&gt;&lt;P&gt;&amp;nbsp; Do you also use the FRDM-K82 board?&lt;/P&gt;&lt;P&gt;&amp;nbsp;Please also tell me which project in the SDK you are using.&lt;/P&gt;&lt;P&gt;&amp;nbsp; Or you can send me your test project, which include the LLS mode enter and recovery.&lt;/P&gt;&lt;P&gt;&amp;nbsp; When I have time, I will help you to check it in details.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Kerry&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>Tue, 07 Aug 2018 07:04:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816460#M49486</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2018-08-07T07:04:19Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS in tickless mode and LLS3</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816461#M49487</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kerry !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Yes, I have used FRDM-K82 board at beginning but now my project is huge.&lt;/P&gt;&lt;P&gt;I think testing example can be combined from SDK examples frdmk82f_freertos_tickless and frdmk82f_power_mode (switch).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Put MCU to LLS3 mode and wakeup via SW3 button.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;All LLWU clean up is the same and etc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From my side I have add only this code :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff; border: 0px; font-size: 14px;"&gt;/* Wait for PLL lock. MCG in PEE mode in RUN. */&lt;/SPAN&gt;&lt;BR style="color: #51626f; background-color: #ffffff;" /&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff; border: 0px; font-size: 14px;"&gt;while (!(kMCG_Pll0LockFlag &amp;amp; CLOCK_GetStatusFlags()))&lt;/SPAN&gt;&lt;BR style="color: #51626f; background-color: #ffffff;" /&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff; border: 0px; font-size: 14px;"&gt;{&lt;/SPAN&gt;&lt;BR style="color: #51626f; background-color: #ffffff;" /&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff; border: 0px; font-size: 14px;"&gt;}&lt;/SPAN&gt;&lt;BR style="color: #51626f; background-color: #ffffff;" /&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff; border: 0px; font-size: 14px;"&gt;CLOCK_SetPeeMode();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff; border: 0px; font-size: 14px;"&gt;But what can be under suspicious in&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;fsl_tickless_systick.c ? if you have idea I can try .&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff; border: 0px; font-size: 14px;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff; border: 0px; font-size: 14px;"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff; border: 0px; font-size: 14px;"&gt;Eugene&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Aug 2018 07:31:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816461#M49487</guid>
      <dc:creator>EugeneHiihtaja</dc:creator>
      <dc:date>2018-08-07T07:31:57Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS in tickless mode and LLS3</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816462#M49488</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eugene,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; After you wake up and do the PEE configuration.&lt;/P&gt;&lt;P&gt;&amp;nbsp; Then, also read the systick according register, and use the uart to printf it, check the systick register, any difference with the data before enter the LLS mode?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Kerry&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>Tue, 07 Aug 2018 07:59:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816462#M49488</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2018-08-07T07:59:56Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS in tickless mode and LLS3</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816463#M49489</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kerry !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think systick is configured properly and decrementing values.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Current value is take before last function what put MCU to LLS mode is executed.&lt;/P&gt;&lt;P&gt;Control and Load registers always the same.&lt;/P&gt;&lt;P&gt;uint32_t systick_current_value_before = portNVIC_SYSTICK_CURRENT_VALUE_REG; // Before&lt;BR /&gt; PM_PowerModeSwitch(&amp;amp;targetConfig, NULL);&lt;/P&gt;&lt;P&gt;..&lt;/P&gt;&lt;P&gt;&amp;nbsp;uint32_t systick_current_value_after = portNVIC_SYSTICK_CURRENT_VALUE_REG; // After&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;portNVIC_SYSTICK_CURRENT_VALUE_REG - 0xAE6 -&amp;gt; 0x6DB&amp;nbsp; // Before and after&lt;BR /&gt;portNVIC_SYSTICK_CTRL_REG - 0x10007&lt;BR /&gt;portNVIC_SYSTICK_LOAD_REG - 0xBB7F&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Out task Task1-&lt;BR /&gt;In task _idle_P ------&lt;BR /&gt;++vPortSuppressTicksAndSleep 957&lt;/P&gt;&lt;P&gt;&amp;nbsp;-- No exit !!!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can see that code exit from Task and go to Idle and execute proprietary&amp;nbsp;&lt;SPAN&gt;vPortSuppressTicksAndSleep( 957 )&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;and not exit any more.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;State machine is not so clear for me yet, but looks like no any interrupts what can resume RTOS from idle.&lt;/P&gt;&lt;P&gt;Looks like LLS3 entry has some effect what is not known yet.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Eugene&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Aug 2018 12:34:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816463#M49489</guid>
      <dc:creator>EugeneHiihtaja</dc:creator>
      <dc:date>2018-08-07T12:34:52Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS in tickless mode and LLS3</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816464#M49490</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;I think this is just not correct implementation of wait mode in&amp;nbsp;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;vPortSuppressTicksAndSleep() function.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;It is done like this:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;__asm volatile( "dsb" ::: "memory" );&lt;BR /&gt; __asm volatile( "wfi" );&lt;BR /&gt; __asm volatile( "isb" );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;but should be like this for have clean up from all previous&amp;nbsp; low power modes:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt; /* Wait mode. */&lt;BR /&gt; SMC_PreEnterWaitModes();&lt;BR /&gt; SMC_SetPowerModeWait(SMC);&lt;BR /&gt; SMC_PostExitWaitModes();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Deep sleep bit should be cleaned&amp;nbsp; becouse it is set in LLS3 mode.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt; /* configure Normal Wait mode */&lt;BR /&gt; SCB-&amp;gt;SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_Msk;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Is this right workaround ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;Eugene&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Aug 2018 09:05:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816464#M49490</guid>
      <dc:creator>EugeneHiihtaja</dc:creator>
      <dc:date>2018-08-08T09:05:55Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS in tickless mode and LLS3</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816465#M49491</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eugene,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Yes, you can refer to the SDK power mode code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SMC_PreEnterWaitModes();&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; SMC_SetPowerModeWait(SMC);&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; SMC_PostExitWaitModes();&lt;/P&gt;&lt;P&gt;void SMC_PreEnterWaitModes(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_savedPrimask = DisableGlobalIRQ();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __ISB();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void SMC_PostExitWaitModes(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnableGlobalIRQ(g_savedPrimask);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __ISB();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;status_t SMC_SetPowerModeWait(SMC_Type *base)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* configure Normal Wait mode */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCB-&amp;gt;SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_Msk;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __DSB();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __WFI();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __ISB();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return kStatus_Success;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;disable the interrup before enter the wait mode, just make sure, when entering the wait mode, no interrupt happens, otherwise the wait mode entry may be failed.&lt;/P&gt;&lt;P&gt;About LLS mode, the code should be:&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; SMC_PreEnterStopModes();&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; SMC_SetPowerModeLls(SMC);&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; SMC_PostExitStopModes();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#if (defined(FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE) &amp;amp;&amp;amp; FSL_FEATURE_SMC_HAS_LOW_LEAKAGE_STOP_MODE)&lt;BR /&gt;status_t SMC_SetPowerModeLls(SMC_Type *base&lt;BR /&gt;#if ((defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) &amp;amp;&amp;amp; FSL_FEATURE_SMC_HAS_LLS_SUBMODE) || \&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (defined(FSL_FEATURE_SMC_HAS_LPOPO) &amp;amp;&amp;amp; FSL_FEATURE_SMC_HAS_LPOPO))&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;&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; ,&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;&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; const smc_power_mode_lls_config_t *config&lt;BR /&gt;#endif&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;&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; )&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t reg;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* configure to LLS mode */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg = base-&amp;gt;PMCTRL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg &amp;amp;= ~SMC_PMCTRL_STOPM_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg |= (kSMC_StopLls &amp;lt;&amp;lt; SMC_PMCTRL_STOPM_SHIFT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;PMCTRL = reg;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* configure LLS sub-mode*/&lt;BR /&gt;#if (defined(FSL_FEATURE_SMC_HAS_LLS_SUBMODE) &amp;amp;&amp;amp; FSL_FEATURE_SMC_HAS_LLS_SUBMODE)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg = base-&amp;gt;STOPCTRL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg &amp;amp;= ~SMC_STOPCTRL_LLSM_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; reg |= ((uint32_t)config-&amp;gt;subMode &amp;lt;&amp;lt; SMC_STOPCTRL_LLSM_SHIFT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base-&amp;gt;STOPCTRL = reg;&lt;BR /&gt;#endif /* FSL_FEATURE_SMC_HAS_LLS_SUBMODE */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#if (defined(FSL_FEATURE_SMC_HAS_LPOPO) &amp;amp;&amp;amp; FSL_FEATURE_SMC_HAS_LPOPO)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (config-&amp;gt;enableLpoClock)&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; base-&amp;gt;STOPCTRL &amp;amp;= ~SMC_STOPCTRL_LPOPO_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&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; base-&amp;gt;STOPCTRL |= SMC_STOPCTRL_LPOPO_MASK;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;#endif /* FSL_FEATURE_SMC_HAS_LPOPO */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set the SLEEPDEEP bit to enable deep sleep mode */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCB-&amp;gt;SCR |= SCB_SCR_SLEEPDEEP_Msk;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* read back to make sure the configuration valid before enter stop mode */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (void)base-&amp;gt;PMCTRL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __DSB();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __WFI();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __ISB();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* check whether the power mode enter LLS mode succeed */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (base-&amp;gt;PMCTRL &amp;amp; SMC_PMCTRL_STOPA_MASK)&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; return kStatus_SMC_StopAbort;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&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; return kStatus_Success;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps you!&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;Kerry&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>Thu, 23 Aug 2018 07:50:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/816465#M49491</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2018-08-23T07:50:45Z</dc:date>
    </item>
    <item>
      <title>Re: FreeRTOS in tickless mode and LLS3</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/1492053#M63589</link>
      <description>&lt;P&gt;Hi Eugene,&lt;/P&gt;&lt;P&gt;I am facing same issue getting out of LLS3 in tickless mode on the K82. How did you resolve this issue?&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jul 2022 00:56:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/FreeRTOS-in-tickless-mode-and-LLS3/m-p/1492053#M63589</guid>
      <dc:creator>zahidul3</dc:creator>
      <dc:date>2022-07-20T00:56:57Z</dc:date>
    </item>
  </channel>
</rss>

