mbed library sources modified for open wear

Dependents:   openwear-lifelogger-example

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Tue Jul 29 19:00:07 2014 +0100
Revision:
268:402bcc0c870b
Parent:
30:91c1d09ada54
Synchronized with git revision 490d1a6606b3138f165c5edf2f2370ca616587c0

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

[LPC1114] Sleep fix + some device.h settings

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 30:91c1d09ada54 1 /* mbed Microcontroller Library
mbed_official 30:91c1d09ada54 2 * Copyright (c) 2006-2013 ARM Limited
mbed_official 30:91c1d09ada54 3 *
mbed_official 30:91c1d09ada54 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 30:91c1d09ada54 5 * you may not use this file except in compliance with the License.
mbed_official 30:91c1d09ada54 6 * You may obtain a copy of the License at
mbed_official 30:91c1d09ada54 7 *
mbed_official 30:91c1d09ada54 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 30:91c1d09ada54 9 *
mbed_official 30:91c1d09ada54 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 30:91c1d09ada54 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 30:91c1d09ada54 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 30:91c1d09ada54 13 * See the License for the specific language governing permissions and
mbed_official 30:91c1d09ada54 14 * limitations under the License.
mbed_official 30:91c1d09ada54 15 */
mbed_official 30:91c1d09ada54 16 #include "sleep_api.h"
mbed_official 30:91c1d09ada54 17 #include "cmsis.h"
mbed_official 30:91c1d09ada54 18 #include "mbed_interface.h"
mbed_official 30:91c1d09ada54 19
mbed_official 30:91c1d09ada54 20 void sleep(void) {
mbed_official 30:91c1d09ada54 21
mbed_official 30:91c1d09ada54 22 // PCON[DPDEN] set to sleep
mbed_official 30:91c1d09ada54 23 LPC_PMU->PCON = 0x0;
mbed_official 30:91c1d09ada54 24
mbed_official 30:91c1d09ada54 25 // SRC[SLEEPDEEP] set to 0 = sleep
mbed_official 30:91c1d09ada54 26 SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk;
mbed_official 30:91c1d09ada54 27
mbed_official 30:91c1d09ada54 28 // wait for interrupt
mbed_official 30:91c1d09ada54 29 __WFI();
mbed_official 30:91c1d09ada54 30 }
mbed_official 30:91c1d09ada54 31
mbed_official 30:91c1d09ada54 32 void deepsleep(void) {
mbed_official 30:91c1d09ada54 33
mbed_official 30:91c1d09ada54 34 // PCON[DPDEN] set to deepsleep
mbed_official 268:402bcc0c870b 35 LPC_PMU->PCON = 0;
mbed_official 30:91c1d09ada54 36
mbed_official 30:91c1d09ada54 37 // SRC[SLEEPDEEP] set to 1 = deep sleep
mbed_official 30:91c1d09ada54 38 SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
mbed_official 30:91c1d09ada54 39
mbed_official 268:402bcc0c870b 40 //According to user manual it is kinda picky about reserved bits, so we follow that nicely
mbed_official 268:402bcc0c870b 41 //Keep WDOSC and BOD in same state as they are now during deepsleep
mbed_official 268:402bcc0c870b 42 LPC_SYSCON->PDSLEEPCFG = 0x000018B7 | (LPC_SYSCON->PDRUNCFG & (PDRUNCFG_WDTOSC_PD | PDRUNCFG_BOD_PD));
mbed_official 268:402bcc0c870b 43
mbed_official 268:402bcc0c870b 44 // Power up same as before powerdown
mbed_official 268:402bcc0c870b 45 LPC_SYSCON->PDAWAKECFG = LPC_SYSCON->PDRUNCFG;
mbed_official 30:91c1d09ada54 46
mbed_official 30:91c1d09ada54 47 // wait for interrupt
mbed_official 30:91c1d09ada54 48 __WFI();
mbed_official 30:91c1d09ada54 49 }