<?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: KL05 exiting low power without input in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL05-exiting-low-power-without-input/m-p/382140#M20353</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Bryan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is no issue with PTB2's LLWU_P5 so I would suggest ensuring that you &lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt;don't have any LLWU flags already set when moving to the low leakage power mode&lt;/EM&gt;&lt;/SPAN&gt;; rather than just resetting the single flag of interest you could reset all possible flags to be sure, remembering that LLWU flags used to wakeup the processor will still remain pending &lt;SPAN style="text-decoration: underline;"&gt;after&lt;/SPAN&gt; a previous wakeup reset.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note also that you don't need to configure the port as an interrupt input for the LLWU functionality to operate.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You may find something of use at &lt;A href="http://www.utasker.com/kinetis/LLWU.html" title="http://www.utasker.com/kinetis/LLWU.html"&gt;http://www.utasker.com/kinetis/LLWU.html&lt;/A&gt; where practicalities of the LLWU module are discussed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have also attached a binary for the FRDM-KL05Z board which shows PTB2 wakeup operation. This pin is also used by UART0 Rx (connected to the OpenSDA's virtual COM) so once the processor is set to a (V)LLS mode a reception on that interface will wake (reset) the processor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have a FRDM-KL05Z as reference you can try it as follows:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Load the binary and connect to the UART via the OpenSDA virtual COM at 115'200 Baud.&lt;/P&gt;&lt;P&gt;2. Hit the return key for a menu and enter the "Administrator" sub-menu&lt;/P&gt;&lt;P&gt;3. The present mode can be requested with "show_lp"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;show_lp&lt;/P&gt;&lt;P&gt;0 = RUN&lt;/P&gt;&lt;P&gt;1 = WAIT [active]&lt;/P&gt;&lt;P&gt;2 = STOP&lt;/P&gt;&lt;P&gt;3 = VLPR&lt;/P&gt;&lt;P&gt;4 = VLPS&lt;/P&gt;&lt;P&gt;5 = LLS&lt;/P&gt;&lt;P&gt;6 = VLLS0&lt;/P&gt;&lt;P&gt;7 = VLLS1&lt;/P&gt;&lt;P&gt;8 = VLLS3&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The default is WAIT (the processor will be switching between RUN and WAIT whenever it can and needs to)&lt;/P&gt;&lt;P&gt;LLWU operation is configured on LLWU_P5, whereby PTB2 is used as UART Rx during operating modes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By commanding a LLS power mode, eg. "set_lp 7" the processor will be set to the mode as soon as it has nothing else to complete (such as the UART prompt sent as confirmation). The current consumption in that mode can be measured.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4. The processor can be woken (via WAKEUP reset) by typing any key, due to the fact that the UART0 RX input is now performing its LLWU function (LLWU_P5)&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;P&gt;&lt;/P&gt;&lt;P&gt;P.S. Note that the low power modes are controlled dynamically in the uTasker project and the LLWU interface is simple to control (see link above). The (low power) code is usable for all KL and K devices and builds with CW, KDS, IAR, Keil, Crossworks, Atollic, CooCox, Green Hills, GCC and VisualStudio (where the operation can also be simulated).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kinetis: &lt;A href="http://www.utasker.com/kinetis.html" title="http://www.utasker.com/kinetis.html"&gt;µTasker Kinetis support&lt;/A&gt;&lt;/P&gt;&lt;P&gt;KL05: &lt;A href="http://www.utasker.com/kinetis/FRDM-KL03Z.html" title="http://www.utasker.com/kinetis/FRDM-KL03Z.html"&gt;µTasker FRDM-KL05Z support&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;For the complete "out-of-the-box" Kinetis experience and faster time to market&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 18 Feb 2015 00:52:31 GMT</pubDate>
    <dc:creator>mjbcswitzerland</dc:creator>
    <dc:date>2015-02-18T00:52:31Z</dc:date>
    <item>
      <title>KL05 exiting low power without input</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL05-exiting-low-power-without-input/m-p/382138#M20351</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;We needed to switch the gpio port that was being used to bring the KL05 out of VLLS1 mode.&amp;nbsp; We were using PTB0 (a supported LLWU pin) that was wired to an accelerometer interrupt line that generated a falling edge when a double tap is detected.&amp;nbsp; This would change the state and/or bring the system out of VLLS1 mode.&amp;nbsp; That worked perfectly.&amp;nbsp; Then we needed to switch the design to use a force sensing resistor with a pullup (instead of the accelerometer double tap detect) on PTB2.&amp;nbsp; &lt;SPAN style="font-size: 12pt; line-height: 1.5em;"&gt;The issue we are having is that the KL05 enters the VLLS1, but doesn't stay there.&amp;nbsp; It immediately comes out of VLLS1 without any input.&amp;nbsp; The system can literally sit there without being touched and will enter and then immediately exit VLLS1 mode.&amp;nbsp; I have a scope probe on the FSR line and the pin is not going low (trigger set all the way up to 2.5v).&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;&lt;/P&gt;&lt;P style="font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;Below is the gpio init code, interrupt handler, and code snippet showing system going into VLLS1 mode.&amp;nbsp; The code for PTB0 is commented out and the code for PTB2 is right above it.&lt;/P&gt;&lt;P style="font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;&lt;SPAN style="font-size: 12pt; line-height: 1.5em;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;void gpio_init(void)&lt;/P&gt;&lt;P&gt;{&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // FSR press detect&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTB_PCR2 = PORT_PCR_MUX(1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Alt1: GPIO&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; | PORT_PCR_IRQC(0x0A); // Falling edge&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTB_PCR2 |= PORT_PCR_ISF_MASK; // clear flag&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;/*&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // MMA845x INT2 - Double pulse detection&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTB_PCR0 = PORT_PCR_MUX(1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Alt1: GPIO&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; | PORT_PCR_IRQC(0x0A) // Falling edge&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; | PORT_PCR_PE_MASK&amp;nbsp;&amp;nbsp;&amp;nbsp; // Pull enable&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; | PORT_PCR_PS_MASK;&amp;nbsp;&amp;nbsp; // Pull select - pullup&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PORTB_PCR0 |= PORT_PCR_ISF_MASK; // clear flag&lt;/P&gt;&lt;P&gt;*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; enable_irq(INT_PORTB - 16);&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void PORTB_IRQHandler(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(PORTB_PCR2 &amp;amp; PORT_PCR_ISF_MASK)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delay_ms(1000);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(GPIOB_PDIR | 1&amp;lt;&amp;lt;2)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state_change(0);&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; printf("\r\nFSR press\r\n");&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear the interrupt flag&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTB_PCR2 |= PORT_PCR_ISF_MASK;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;/*&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; if(PORTB_PCR0 &amp;amp; PORT_PCR_ISF_MASK)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMA845x_pulse_flag_set();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read the INT_SOURCE register&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tmp = hal_dev_mma8451_read_reg(0x0C);&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((tmp &amp;amp; 0x08) == 0x08)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Yes.&amp;nbsp; Read the (PULSE_SRC) Pulse source register to clear the flag.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tmp = hal_dev_mma8451_read_reg(0x22);&lt;/P&gt;&lt;P&gt;&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; // Double pulse has been detected - change state&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; state_change(0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear the interrupt flag&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTB_PCR0 |= PORT_PCR_ISF_MASK;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;*/&amp;nbsp; &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Code to go into VLLS1&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; case LOW_POWER_STATE:&lt;/P&gt;&lt;P&gt;&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; // Turn off LEDs&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; PORTB_PCR10 = PORT_PCR_MUX(1);&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; GPIOB_PDDR |= 0x00000400;&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; GPIOB_PSOR |= 0x00000400;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Disable SWD pin&lt;/SPAN&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; PORTA_PCR0 = PORT_PCR_MUX(1);&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; PORTA_PCR2 = PORT_PCR_MUX(1);&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&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Put KL05 in low power&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_PMPROT = SMC_PMPROT_AVLLS_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Allow device to go into low-leakage power mode &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_PMCTRL = SMC_PMCTRL_STOPM(4);&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; SMC_STOPCTRL = SMC_PMCTRL_STOPM(1);&amp;nbsp;&amp;nbsp;&amp;nbsp; // VLLS1&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; dummyread=SMC_PMCTRL;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Give time for PMCTRL register to write&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; MCG_C6&amp;amp;=~MCG_C6_CME0_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Turn off Clock Monitor&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; // LLWU config&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; LLWU_F1&amp;nbsp; |= LLWU_F1_WUF5_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear wakeup flag for PTB2/LLWU_P5&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; LLWU_PE2 = LLWU_PE2_WUPE5(2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Configure wakeup on PTB2/LLWU_P5 (falling edge)&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; LLWU_ME&amp;nbsp; = LLWU_ME_WUME5_MASK;&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; LLWU_F1&amp;nbsp; |= LLWU_F1_WUF4_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear wakeup flag for PTB0/LLWU_P4 (Accelerometer INT2 line to PTB0)&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; LLWU_PE2 = LLWU_PE2_WUPE4(2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Configure wakeup on PTB0/LLWU_P4 (falling edge)&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; LLWU_ME&amp;nbsp; = LLWU_ME_WUME4_MASK;&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; while(1)&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;&amp;nbsp;&amp;nbsp; stop();&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; &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; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 Feb 2015 20:52:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL05-exiting-low-power-without-input/m-p/382138#M20351</guid>
      <dc:creator>bryano</dc:creator>
      <dc:date>2015-02-17T20:52:00Z</dc:date>
    </item>
    <item>
      <title>Re: KL05 exiting low power without input</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL05-exiting-low-power-without-input/m-p/382139#M20352</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Bryan,&lt;/P&gt;&lt;P&gt;The code I am running normally would place the FRDM-KL05 into VLLS1 mode and use the LLWU TSI0 touch sensor interface to wake the device up.&lt;/P&gt;&lt;P&gt;I added the below code to that application to enable the PTB2 pin to be configured as an input LLWU source.&amp;nbsp; I also used the internal PTB2 pull-up resistor and then simple shorted it to ground via resistor to test from TP20 to J8 pin 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#if 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //DES 1=test(... Set Pin B2 to GPIO function, pull-up enabled) , 0=default code&lt;/P&gt;&lt;P&gt;PORTB_PCR2 = PORT_PCR_MUX(1) |&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; PORT_PCR_PE_MASK |&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; PORT_PCR_PS_MASK;&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#if 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //DES 1=test, 0=default code&lt;/P&gt;&lt;P&gt;// Need to enable a wake up source also&lt;/P&gt;&lt;P&gt;LLWU_PE2=LLWU_PE2_WUPE5(2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //DES set PTB2 falling edge interrupt for LLWU&lt;/P&gt;&lt;P&gt;LLWU_F1|=LLWU_F1_WUF5_MASK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //DES Clear PTB2 flag&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Attached is my ZIP project.&amp;nbsp; It is using IAR.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;David&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 Feb 2015 21:20:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL05-exiting-low-power-without-input/m-p/382139#M20352</guid>
      <dc:creator>DavidS</dc:creator>
      <dc:date>2015-02-17T21:20:07Z</dc:date>
    </item>
    <item>
      <title>Re: KL05 exiting low power without input</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL05-exiting-low-power-without-input/m-p/382140#M20353</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Bryan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is no issue with PTB2's LLWU_P5 so I would suggest ensuring that you &lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt;don't have any LLWU flags already set when moving to the low leakage power mode&lt;/EM&gt;&lt;/SPAN&gt;; rather than just resetting the single flag of interest you could reset all possible flags to be sure, remembering that LLWU flags used to wakeup the processor will still remain pending &lt;SPAN style="text-decoration: underline;"&gt;after&lt;/SPAN&gt; a previous wakeup reset.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note also that you don't need to configure the port as an interrupt input for the LLWU functionality to operate.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You may find something of use at &lt;A href="http://www.utasker.com/kinetis/LLWU.html" title="http://www.utasker.com/kinetis/LLWU.html"&gt;http://www.utasker.com/kinetis/LLWU.html&lt;/A&gt; where practicalities of the LLWU module are discussed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have also attached a binary for the FRDM-KL05Z board which shows PTB2 wakeup operation. This pin is also used by UART0 Rx (connected to the OpenSDA's virtual COM) so once the processor is set to a (V)LLS mode a reception on that interface will wake (reset) the processor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you have a FRDM-KL05Z as reference you can try it as follows:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Load the binary and connect to the UART via the OpenSDA virtual COM at 115'200 Baud.&lt;/P&gt;&lt;P&gt;2. Hit the return key for a menu and enter the "Administrator" sub-menu&lt;/P&gt;&lt;P&gt;3. The present mode can be requested with "show_lp"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;show_lp&lt;/P&gt;&lt;P&gt;0 = RUN&lt;/P&gt;&lt;P&gt;1 = WAIT [active]&lt;/P&gt;&lt;P&gt;2 = STOP&lt;/P&gt;&lt;P&gt;3 = VLPR&lt;/P&gt;&lt;P&gt;4 = VLPS&lt;/P&gt;&lt;P&gt;5 = LLS&lt;/P&gt;&lt;P&gt;6 = VLLS0&lt;/P&gt;&lt;P&gt;7 = VLLS1&lt;/P&gt;&lt;P&gt;8 = VLLS3&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The default is WAIT (the processor will be switching between RUN and WAIT whenever it can and needs to)&lt;/P&gt;&lt;P&gt;LLWU operation is configured on LLWU_P5, whereby PTB2 is used as UART Rx during operating modes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By commanding a LLS power mode, eg. "set_lp 7" the processor will be set to the mode as soon as it has nothing else to complete (such as the UART prompt sent as confirmation). The current consumption in that mode can be measured.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4. The processor can be woken (via WAKEUP reset) by typing any key, due to the fact that the UART0 RX input is now performing its LLWU function (LLWU_P5)&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;P&gt;&lt;/P&gt;&lt;P&gt;P.S. Note that the low power modes are controlled dynamically in the uTasker project and the LLWU interface is simple to control (see link above). The (low power) code is usable for all KL and K devices and builds with CW, KDS, IAR, Keil, Crossworks, Atollic, CooCox, Green Hills, GCC and VisualStudio (where the operation can also be simulated).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kinetis: &lt;A href="http://www.utasker.com/kinetis.html" title="http://www.utasker.com/kinetis.html"&gt;µTasker Kinetis support&lt;/A&gt;&lt;/P&gt;&lt;P&gt;KL05: &lt;A href="http://www.utasker.com/kinetis/FRDM-KL03Z.html" title="http://www.utasker.com/kinetis/FRDM-KL03Z.html"&gt;µTasker FRDM-KL05Z support&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;For the complete "out-of-the-box" Kinetis experience and faster time to market&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Feb 2015 00:52:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL05-exiting-low-power-without-input/m-p/382140#M20353</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2015-02-18T00:52:31Z</dc:date>
    </item>
  </channel>
</rss>

