Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of PowerControl by
Revision 1:776b70fc6d91, committed 2013-12-14
- Comitter:
- JuAnne
- Date:
- Sat Dec 14 02:31:50 2013 +0000
- Parent:
- 0:9bd5f1bdb845
- Commit message:
- some experiments
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Sat Jan 30 02:23:30 2010 +0000
+++ b/main.cpp Sat Dec 14 02:31:50 2013 +0000
@@ -2,6 +2,7 @@
#include "PowerControl/PowerControl.h"
#include "PowerControl/EthernetPowerControl.h"
+#if 0
int main() {
//turn OSC1 down
PHY_PowerDown();
@@ -12,4 +13,68 @@
LPC_GPIO1->FIOSET = 0x8000000;
wait(5);
PHY_PowerUp();
-}
\ No newline at end of file
+}
+#else
+// Need PowerControl *.h files from this URL
+// http://mbed.org/users/no2chem/notebook/mbed-power-controlconsumption/
+
+// Function to power down magic USB interface chip with new firmware
+#define USR_POWERDOWN (0x104)
+int semihost_powerdown() {
+ uint32_t arg;
+ return __semihost(USR_POWERDOWN, &arg);
+}
+
+DigitalOut myled1(LED1);
+DigitalOut myled2(LED2);
+DigitalOut myled3(LED3);
+DigitalOut myled4(LED4);
+
+Ticker blinker;
+int count=1;
+
+void blink() {
+ count = count << 1;
+ if (count > 0x08) count = 0x01;
+ myled1 = count & 0x01;
+ myled2 = count & 0x02;
+ myled3 = count & 0x04;
+ myled4 = count & 0x08;
+}
+
+int main() {
+ int result;
+// Normal mbed power level for this setup is around 690mW
+// assuming 5V used on Vin pin
+// If you don't need networking...
+// Power down Ethernet interface - saves around 175mW
+// Also need to unplug network cable - just a cable sucks power
+ PHY_PowerDown();
+
+// If you don't need the PC host USB interface....
+// Power down magic USB interface chip - saves around 150mW
+// Needs new firmware (URL below) and USB cable not connected
+// http://mbed.org/users/simon/notebook/interface-powerdown/
+// Supply power to mbed using Vin pin
+ result = semihost_powerdown();
+// Power consumption is now around half
+
+// Turn off clock enables on unused I/O Peripherals (UARTs, Timers, PWM, SPI, CAN, I2C, A/D...)
+// To save just a tiny bit more power - most are already off by default in this short code example
+// See PowerControl.h for I/O device bit assignments
+// Don't turn off GPIO - it is needed to blink the LEDs
+ Peripheral_PowerDown(0xFFFF7FFF);
+
+// use Ticker interrupt and Sleep instead of a wait for time delay - saves up to 70mW
+// Sleep halts and waits for an interrupt instead of executing instructions
+// power is saved by not constantly fetching and decoding instructions
+// Exact power level reduction depends on the amount of time spent in Sleep mode
+ blinker.attach(&blink, 0.625);//0.0625 almost no difference
+ while (1) {
+ //Sleep();
+ DeepSleep();
+ //PowerDown();
+ //DeepPowerDown();
+ }
+}
+#endif
\ No newline at end of file
