<?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>LPC MicrocontrollersのトピックLPC1768 DeepPowerDown recovery</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-DeepPowerDown-recovery/m-p/517871#M2385</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by DavidKiryat8 on Wed Feb 10 02:34:45 MST 2016&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;My scenario is:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 1) Enter DeepPowerDown mode&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 2) Wake every minute by way of the RTC&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 3) Check a GPIO pin and either go back to sleep or reset.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Using the PowerDown mode instead, this works.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I think that the GPIO pin may not be read correctly when woke up.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I read in one place in the user manual that GPIO is always enabled by I even re-enabled it in PCONP.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After DeepPowerDown mode, what steps must I perform in order to read a GPIO pin?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
&amp;nbsp; // Turn Off PLL0 because of errata declared bug that leaves it on
&amp;nbsp; if (state.bPLL0_Running){
&amp;nbsp;&amp;nbsp;&amp;nbsp; pll_LPC_DisablePLL0();
&amp;nbsp;&amp;nbsp;&amp;nbsp; pll_LPC_DisablePLL1();
&amp;nbsp; }
&amp;nbsp; // Set CPU to use oscillator and not crystal
&amp;nbsp; pll_LPC_UseOscillator();
start_sleep:
&amp;nbsp; // Sleep
&amp;nbsp; CLKPWR_DeepPowerDown(); // no ram
&amp;nbsp; // Do we really need to wake up or can we just go back to sleep?
&amp;nbsp; LPC_SC-&amp;gt;PCONP |= CLKPWR_PCONP_PCGPIO;
&amp;nbsp; if (!EXT_POWER_ON){
&amp;nbsp; goto start_sleep;
&amp;nbsp; }
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:30:36 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:30:36Z</dc:date>
    <item>
      <title>LPC1768 DeepPowerDown recovery</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-DeepPowerDown-recovery/m-p/517871#M2385</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by DavidKiryat8 on Wed Feb 10 02:34:45 MST 2016&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;My scenario is:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 1) Enter DeepPowerDown mode&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 2) Wake every minute by way of the RTC&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 3) Check a GPIO pin and either go back to sleep or reset.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Using the PowerDown mode instead, this works.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I think that the GPIO pin may not be read correctly when woke up.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I read in one place in the user manual that GPIO is always enabled by I even re-enabled it in PCONP.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After DeepPowerDown mode, what steps must I perform in order to read a GPIO pin?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
&amp;nbsp; // Turn Off PLL0 because of errata declared bug that leaves it on
&amp;nbsp; if (state.bPLL0_Running){
&amp;nbsp;&amp;nbsp;&amp;nbsp; pll_LPC_DisablePLL0();
&amp;nbsp;&amp;nbsp;&amp;nbsp; pll_LPC_DisablePLL1();
&amp;nbsp; }
&amp;nbsp; // Set CPU to use oscillator and not crystal
&amp;nbsp; pll_LPC_UseOscillator();
start_sleep:
&amp;nbsp; // Sleep
&amp;nbsp; CLKPWR_DeepPowerDown(); // no ram
&amp;nbsp; // Do we really need to wake up or can we just go back to sleep?
&amp;nbsp; LPC_SC-&amp;gt;PCONP |= CLKPWR_PCONP_PCGPIO;
&amp;nbsp; if (!EXT_POWER_ON){
&amp;nbsp; goto start_sleep;
&amp;nbsp; }
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:30:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-DeepPowerDown-recovery/m-p/517871#M2385</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:30:36Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1768 DeepPowerDown recovery</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-DeepPowerDown-recovery/m-p/517872#M2386</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by DavidKiryat8 on Thu Feb 11 02:09:40 MST 2016&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Does any one know what this line from the LPC1768 pdf (not user manual) means?&lt;/SPAN&gt;&lt;BR /&gt;&lt;I&gt;7.29.6.4 Deep power-down mode&lt;BR /&gt;The Deep power-down mode can only be entered from the RTC block. In Deep&lt;BR /&gt;power-down mode, power is shut off to the entire chip with the exception of the RTC&lt;BR /&gt;module and the RESET pin.&lt;BR /&gt;The LPC1768/66/65/64 can wake up from Deep power-down mode via the RESET pin or&lt;BR /&gt;an alarm match event of the RTC.&lt;/I&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does this mean that I must be using the PLL based on the RTC clock in order to enter Deep power-down mode?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I do not think that the RTC can be the source of the system clock without using the PLL.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Am I correct?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does this mean the errata comment to disconnect the PLL should not be used?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;&amp;nbsp; LPC_SC-&amp;gt;PLL0CON &amp;amp;= ~(1&amp;lt;&amp;lt;1);&amp;nbsp; /* Disconnect the main PLL (PLL0) */
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED = 0xAA;&amp;nbsp; /* Feed */
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED = 0x55;&amp;nbsp; /* Feed */
&amp;nbsp; while ((LPC_SC-&amp;gt;PLL0STAT &amp;amp; (1&amp;lt;&amp;lt;25)) != 0x00); /* Wait for main PLL (PLL0) to disconnect */
&amp;nbsp; LPC_SC-&amp;gt;PLL0CON &amp;amp;= ~(1&amp;lt;&amp;lt;0);&amp;nbsp; /* Turn off the main PLL (PLL0) */
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED = 0xAA;&amp;nbsp; /* Feed */
&amp;nbsp; LPC_SC-&amp;gt;PLL0FEED = 0x55;&amp;nbsp; /* Feed */
&amp;nbsp; while ((LPC_SC-&amp;gt;PLL0STAT &amp;amp; (1&amp;lt;&amp;lt;24)) != 0x00); /* Wait for main PLL (PLL0) to shut down */
&amp;nbsp; /************** Then enter into Deep sleep mode or Power-down mode*****************/
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:30:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-DeepPowerDown-recovery/m-p/517872#M2386</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:30:37Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1768 DeepPowerDown recovery</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-DeepPowerDown-recovery/m-p/517873#M2387</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by DavidKiryat8 on Thu Feb 18 06:34:51 MST 2016&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;To recap my scenario.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 1) Put the LPC1768 into Deep power-down mode after a power outage.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 2) Wake up every minute and check the external power pin.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; 3) If still no external power go back to sleep otherwise reset.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If I disable the RTC then the LPC1768 goes to sleep till reset as I would expect but I have no way to wake my board back up.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If I leave the RTC minute interrupt,&amp;nbsp; the board stays awake for a few seconds and then goes back to sleep every minute or so. The time awake is not logical.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I need more information of what state the CPU is when the RTC wakes it up.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;1) How long does it take to wake up? I am using the IRC clock before going to sleep.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;2) In order to read the GPIO pin P2.12 in the RTC interrupt what do I need to do?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;3) What do I need to do before putting the LPC1768 back to sleep.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; Do I need to set the pin directions and pull ups, clock?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Could anyone test a code snippet and send me?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:30:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-DeepPowerDown-recovery/m-p/517873#M2387</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:30:37Z</dc:date>
    </item>
    <item>
      <title>Re: LPC1768 DeepPowerDown recovery</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-DeepPowerDown-recovery/m-p/517874#M2388</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by DavidKiryat8 on Sun Feb 28 07:25:07 MST 2016&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;I wish NXP personnel would update the AN10915 pdf with more information.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;There is very little information about the&amp;nbsp; Wake-up Interrupt Controller (WIC) in the newer user manual. I thought that the WIC was saving the program counter somewhere so it could process the next line after the __WFI(); when CLKPWR_DeepPowerDown() is called.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; After continuously trying different code versions, I understood that the SRAM and internal registers must also be powered down to save power and the CPU is reset when the RTC interrupt occurs. Now my custom board's complete power is down to 0.73ma in DeepPowerDown mode as opposed to CLKPWR_PowerDown() mode's 3.41ma.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I would expect the difference between the two modes to be 30 to 40ua as shown in the chip's data sheet, so something in the LPC1768 is not shutting off in normal power down mode.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The pin directions, interrupts and PLL are all shutoff the same way.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is my code snippet for DeepPowerDown mode&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In the main.c immediately:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;#ifdef USE_LOW_POWER
#ifdef USE_DEEP_POWER_DOWN
&amp;nbsp; //---------------------------------------------------------------------------
&amp;nbsp; // Woke up from DeepPowerDown and still no External Power?
&amp;nbsp; //---------------------------------------------------------------------------
&amp;nbsp; if ((LPC_SC-&amp;gt;PCON &amp;amp; BIT(11)) &amp;amp;&amp;amp; !EXT_POWER_ON){
&amp;nbsp;&amp;nbsp;&amp;nbsp; //-------------------------------------------------------------------------
&amp;nbsp; // Set RTC to wakeup in 30s and go to the deepest sleep
&amp;nbsp; //-------------------------------------------------------------------------
&amp;nbsp; main_DeepPowerDownSleep();
&amp;nbsp; }else{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //---------------------------------------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // PCON
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; 11 DPDFLAG Deep Power-down entry flag. Set when the Deep Power-down mode
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; is successfully entered. Cleared by software writing a one to this bit.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //---------------------------------------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPC_SC-&amp;gt;PCON |= BIT(11);
&amp;nbsp; }
#endif
#endif
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
inline void main_DeepPowerDownSleep(void)
{
&amp;nbsp; //---------------------------------------------------------------------------
&amp;nbsp; // Set CPU to run from RTC clock
&amp;nbsp; //---------------------------------------------------------------------------
&amp;nbsp; LPC_SC-&amp;gt;CLKSRCSEL = 2;//RTC -&amp;gt; PLL0
&amp;nbsp; SystemCoreClock = FREQ_RTC_OSC / ((LPC_SC-&amp;gt;CCLKCFG &amp;amp; 0xFF)+ 1);
&amp;nbsp; //---------------------------------------------------------------------------
&amp;nbsp; // Just before sleeping Kick watchdog if used
&amp;nbsp; //---------------------------------------------------------------------------
#ifdef USE_WATCHDOG
&amp;nbsp; WDT_UpdateTimeOut(WDT_TIMEOUT_150S);
#endif
&amp;nbsp; RTC_Init(LPC_RTC);
&amp;nbsp; RTC_ResetClockTickCounter(LPC_RTC);
&amp;nbsp; RTC_SetTime (LPC_RTC, RTC_TIMETYPE_SECOND, 0);
&amp;nbsp; //-------------------------------------------------------------------------
&amp;nbsp; // Set alarm time = 30s.
&amp;nbsp; // So, after each 30s, RTC will generate and wake-up system out of Deep PowerDown mode.
&amp;nbsp; //-------------------------------------------------------------------------
&amp;nbsp; RTC_SetAlarmTime (LPC_RTC, RTC_TIMETYPE_SECOND,30);
&amp;nbsp; RTC_CntIncrIntConfig (LPC_RTC, RTC_TIMETYPE_SECOND, DISABLE);
&amp;nbsp; //-------------------------------------------------------------------------
&amp;nbsp; // Set the AMR for 5s match alarm interrupt
&amp;nbsp; //-------------------------------------------------------------------------
&amp;nbsp; RTC_AlarmIntConfig (LPC_RTC,RTC_TIMETYPE_SECOND, ENABLE);
&amp;nbsp; RTC_ClearIntPending(LPC_RTC,RTC_INT_COUNTER_INCREASE);
&amp;nbsp; RTC_ClearIntPending(LPC_RTC, RTC_INT_ALARM);
&amp;nbsp; RTC_Cmd(LPC_RTC, ENABLE);
&amp;nbsp; NVIC_EnableIRQ(RTC_IRQn);
&amp;nbsp; //-------------------------------------------------------------------------
&amp;nbsp; // PCON
&amp;nbsp; //&amp;nbsp; 11 DPDFLAG Deep Power-down entry flag. Set when the Deep Power-down mode
&amp;nbsp; //&amp;nbsp;&amp;nbsp;&amp;nbsp; is successfully entered. Cleared by software writing a one to this bit.
&amp;nbsp; //-------------------------------------------------------------------------
&amp;nbsp; LPC_SC-&amp;gt;PCON |= BIT(11);
&amp;nbsp; //-------------------------------------------------------------------------
&amp;nbsp; // Disable GPIO Power
&amp;nbsp; //-------------------------------------------------------------------------
&amp;nbsp; CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCGPIO,DISABLE);
&amp;nbsp; CLKPWR_DeepPowerDown(); // no ram
} // main_DeepPowerDownSleep
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When I detect that external power has been off for so many seconds, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I change the CPU's pins directions , disable interrupts , change to the IRC turning off the Plls (errata pdf)&amp;nbsp; and then change to the RTC and call main_DeepPowerDownSleep.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If anyone has any idea why the normal power down mode takes so much current, please advise.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have use cases where I need the SRAM to be powered so I would use normal power down mode.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:30:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1768-DeepPowerDown-recovery/m-p/517874#M2388</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:30:38Z</dc:date>
    </item>
  </channel>
</rss>

