mbed library sources modified for open wear

Dependents:   openwear-lifelogger-example

Fork of mbed-src by mbed official

Files at this revision

API Documentation at this revision

Comitter:
mbed_official
Date:
Tue Jul 29 19:00:07 2014 +0100
Parent:
267:8673334f2cbe
Child:
269:0e58554f11d5
Commit message:
Synchronized with git revision 490d1a6606b3138f165c5edf2f2370ca616587c0

Full URL: https://github.com/mbedmicro/mbed/commit/490d1a6606b3138f165c5edf2f2370ca616587c0/

[LPC1114] Sleep fix + some device.h settings

Changed in this revision

targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11CXX/device.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11XX/device.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/sleep.c Show annotated file Show diff for this revision Revisions of this file
--- a/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11CXX/device.h	Tue Jul 29 18:45:06 2014 +0100
+++ b/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11CXX/device.h	Tue Jul 29 19:00:07 2014 +0100
@@ -41,8 +41,8 @@
 
 #define DEVICE_PWMOUT           1
 
-#define DEVICE_SEMIHOST         1
-#define DEVICE_LOCALFILESYSTEM  1
+#define DEVICE_SEMIHOST         0
+#define DEVICE_LOCALFILESYSTEM  0
 #define DEVICE_ID_LENGTH       32
 #define DEVICE_MAC_OFFSET      20
 
--- a/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11XX/device.h	Tue Jul 29 18:45:06 2014 +0100
+++ b/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/TARGET_LPC11XX/device.h	Tue Jul 29 19:00:07 2014 +0100
@@ -41,8 +41,8 @@
 
 #define DEVICE_PWMOUT           1
 
-#define DEVICE_SEMIHOST         1
-#define DEVICE_LOCALFILESYSTEM  1
+#define DEVICE_SEMIHOST         0
+#define DEVICE_LOCALFILESYSTEM  0
 #define DEVICE_ID_LENGTH       32
 #define DEVICE_MAC_OFFSET      20
 
--- a/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/sleep.c	Tue Jul 29 18:45:06 2014 +0100
+++ b/targets/hal/TARGET_NXP/TARGET_LPC11XX_11CXX/sleep.c	Tue Jul 29 19:00:07 2014 +0100
@@ -18,10 +18,6 @@
 #include "mbed_interface.h"
 
 void sleep(void) {
-#if DEVICE_SEMIHOST
-    // ensure debug is disconnected
-    mbed_interface_disconnect();
-#endif
     
     // PCON[DPDEN] set to sleep
     LPC_PMU->PCON = 0x0;
@@ -33,46 +29,20 @@
     __WFI();
 }
 
-/*
-* The mbed lpc1768 does not support the deepsleep mode
-* as a debugger is connected to it (the mbed interface).
-*
-* As mentionned in an application note from NXP:
-*
-*       http://www.po-star.com/public/uploads/20120319123122_141.pdf
-*
-*       {{{
-*       The user should be aware of certain limitations during debugging.
-*       The most important is that, due to limitations of the Cortex-M3
-*       integration, the LPC17xx cannot wake up in the usual manner from
-*       Deep Sleep and Power-down modes. It is recommended not to use these
-*       modes during debug. Once an application is downloaded via JTAG/SWD
-*       interface, the USB to SWD/JTAG debug adapter (Keil ULINK2 for example)
-*       should be removed from the target board, and thereafter, power cycle
-*       the LPC17xx to allow wake-up from deep sleep and power-down modes
-*       }}}
-*
-*       As the interface firmware does not reset the target when a
-*       mbed_interface_disconnect() semihosting call is made, the
-*       core cannot wake-up from deepsleep.
-*
-*       We treat a deepsleep() as a normal sleep().
-*/
-
 void deepsleep(void) {
-#if DEVICE_SEMIHOST
-    // ensure debug is disconnected
-    mbed_interface_disconnect();
-#endif
     
     // PCON[DPDEN] set to deepsleep
-    LPC_PMU->PCON = 0x2;
+    LPC_PMU->PCON = 0;
     
     // SRC[SLEEPDEEP] set to 1 = deep sleep
     SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
     
-    // Power up everything after powerdown
-    LPC_SYSCON->PDAWAKECFG &= 0xFFFFF800;
+    //According to user manual it is kinda picky about reserved bits, so we follow that nicely
+    //Keep WDOSC and BOD in same state as they are now during deepsleep
+    LPC_SYSCON->PDSLEEPCFG = 0x000018B7 | (LPC_SYSCON->PDRUNCFG & (PDRUNCFG_WDTOSC_PD | PDRUNCFG_BOD_PD)); 
+    
+    // Power up same as before powerdown
+    LPC_SYSCON->PDAWAKECFG = LPC_SYSCON->PDRUNCFG;
     
     // wait for interrupt
     __WFI();