4180 lab 1

Dependencies:   mbed MCP23S17 PinDetect USBDevice

Revision:
11:2cfdab516b21
Child:
12:cc5bda248946
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/powermanagement_ec.h	Tue Jan 21 21:06:20 2020 +0000
@@ -0,0 +1,49 @@
+#include "mbed.h"
+#include "PowerControl/PowerControl.h"
+#include "PowerControl/EthernetPowerControl.h"
+// 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 myled(p26);
+DigitalIn pb(p22);
+ 
+int run_powermanagementEC() {
+    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.0625);
+    while (1) {
+//        Sleep();
+        myled = !pb;
+    }
+}
\ No newline at end of file