<?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 How to enter wait mode in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-enter-wait-mode/m-p/318876#M14153</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi at all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;First of all my facts:&lt;/P&gt;&lt;P&gt;I'm using &lt;SPAN style="font-size: 10pt;"&gt;CW V.1.5 (without PEX), to program a MK20DX128 (50MHz)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Now my Problem:&lt;/P&gt;&lt;P&gt;I develop a battery powered device which runs a lot of time but only works&lt;/P&gt;&lt;P&gt;a few minutes per day. So I would like to force the device into a wait or&lt;/P&gt;&lt;P&gt;sleep mode. The problem is that I need the UART receive interrupt&lt;/P&gt;&lt;P&gt;to wake up the device. I do all my calculations in interrupts, so my main loop&lt;/P&gt;&lt;P&gt;is empty.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At the moment I try to force the device into wait mode immediately&lt;/P&gt;&lt;P&gt;when I arrive the main loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;for(;;) &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; SCB_SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_MASK;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; asm("WFI");&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How can I check if the device is in wait mode? Is there a special register?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there another sleep register which fits to my problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks a lot!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Pascal&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 13 Jun 2014 11:34:24 GMT</pubDate>
    <dc:creator>pascalschröer</dc:creator>
    <dc:date>2014-06-13T11:34:24Z</dc:date>
    <item>
      <title>How to enter wait mode</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-enter-wait-mode/m-p/318876#M14153</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi at all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;First of all my facts:&lt;/P&gt;&lt;P&gt;I'm using &lt;SPAN style="font-size: 10pt;"&gt;CW V.1.5 (without PEX), to program a MK20DX128 (50MHz)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Now my Problem:&lt;/P&gt;&lt;P&gt;I develop a battery powered device which runs a lot of time but only works&lt;/P&gt;&lt;P&gt;a few minutes per day. So I would like to force the device into a wait or&lt;/P&gt;&lt;P&gt;sleep mode. The problem is that I need the UART receive interrupt&lt;/P&gt;&lt;P&gt;to wake up the device. I do all my calculations in interrupts, so my main loop&lt;/P&gt;&lt;P&gt;is empty.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At the moment I try to force the device into wait mode immediately&lt;/P&gt;&lt;P&gt;when I arrive the main loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;for(;;) &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; SCB_SCR &amp;amp;= ~SCB_SCR_SLEEPDEEP_MASK;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt; asm("WFI");&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How can I check if the device is in wait mode? Is there a special register?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there another sleep register which fits to my problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks a lot!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Pascal&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Jun 2014 11:34:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-enter-wait-mode/m-p/318876#M14153</guid>
      <dc:creator>pascalschröer</dc:creator>
      <dc:date>2014-06-13T11:34:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to enter wait mode</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-enter-wait-mode/m-p/318877#M14154</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Pascal&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In deep sleep mode most peripheral clocks are stopped and so no UART reception will be possible (to generate an interrupt to wake the processor).&lt;/P&gt;&lt;P&gt;It may be appropriate to use a LLWU pin (connected in parallel with the UART Rx) to allow wakeup from a low leakage mode.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Jun 2014 18:02:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-enter-wait-mode/m-p/318877#M14154</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2014-06-13T18:02:02Z</dc:date>
    </item>
    <item>
      <title>Re: How to enter wait mode</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-enter-wait-mode/m-p/318878#M14155</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Okay that could be a solution. I will try it! &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But where can I see in which mode the device currently runs?&lt;/P&gt;&lt;P&gt;I tried &lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;to force the device into the wait mode but I can't check it.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;I haven't found a register in the datasheet which give information&lt;/P&gt;&lt;P&gt;about this status.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Pascal&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Jun 2014 19:07:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-enter-wait-mode/m-p/318878#M14155</guid>
      <dc:creator>pascalschröer</dc:creator>
      <dc:date>2014-06-13T19:07:37Z</dc:date>
    </item>
    <item>
      <title>Re: How to enter wait mode</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-enter-wait-mode/m-p/318879#M14156</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Pascal&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I don't think you need to directly check the mode because you will know when the processor is in the wait mode since it won't be running.&lt;/P&gt;&lt;P&gt;In the uTasker project there is a low power task that manages the use of the mode and it is easy to check whether the processor is running or sleeding by the state of an output or an LED.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;extern void fnLowPower(TTASKTABLE *ptrTaskTable)&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;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;// lowpower task called on every scheduling pass&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;STRONG&gt;{&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;if (!uNoSchedule(OWN_TASK)) {&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; &lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;// is the scheduler idle?&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;MEASURE_LOW_POWER_ON();&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; &lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;fnDoLowPower();&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; &lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;// switch to low power mode until woken&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;MEASURE_LOW_POWER_OFF();&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; &lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;STRONG&gt;}&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;fnDoLowPower() is effectively (in its simplest form) the "WFI" command and MEASURE_LOW_POWER_ON() and MEASURE_LOW_POWER_OFF() are typically defined to set and clear an LED (for example) and it is seen when the processor is in the sleep or the run mode. &lt;/P&gt;&lt;P&gt;The low leakage modes are probably best monitored by measuring the current consumption to ensure that value is as expected since this is the aim of these modes anyway. As well as limits to peripherals operating in each mode there will usally be different start-up times when leaving the used mode, so effects of this on the system operation need to be considered as part of the design/test.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Jun 2014 21:18:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-enter-wait-mode/m-p/318879#M14156</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2014-06-13T21:18:00Z</dc:date>
    </item>
    <item>
      <title>Re: How to enter wait mode</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-enter-wait-mode/m-p/318880#M14157</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your answer!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Pascal&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 Jun 2014 08:34:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/How-to-enter-wait-mode/m-p/318880#M14157</guid>
      <dc:creator>pascalschröer</dc:creator>
      <dc:date>2014-06-14T08:34:37Z</dc:date>
    </item>
  </channel>
</rss>

