ECE 4180 Lab 1 Extra Credit 3
Dependencies: EthernetPowerControl mbed
Revision 0:d6455f342aef, committed 2018-10-09
- Comitter:
- abraha2d
- Date:
- Tue Oct 09 00:15:25 2018 +0000
- Commit message:
- Save point
Changed in this revision
diff -r 000000000000 -r d6455f342aef PowerControl.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PowerControl.lib Tue Oct 09 00:15:25 2018 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/abraha2d/code/EthernetPowerControl/#8d381ef0ebcc
diff -r 000000000000 -r d6455f342aef main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Oct 09 00:15:25 2018 +0000 @@ -0,0 +1,66 @@ +#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 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(0xFF7F7FFF); + +// 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(); + } +} +
diff -r 000000000000 -r d6455f342aef mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Oct 09 00:15:25 2018 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/e95d10626187 \ No newline at end of file