ok

Dependencies:   mbed

Committer:
avnisha
Date:
Wed Sep 11 17:14:35 2013 +0000
Revision:
0:ca2e1d0254a6
ok

Who changed what in which revision?

UserRevisionLine numberNew contents of line
avnisha 0:ca2e1d0254a6 1
avnisha 0:ca2e1d0254a6 2 #include "mbed.h"
avnisha 0:ca2e1d0254a6 3 #include "PowerControl.h"
avnisha 0:ca2e1d0254a6 4 //#include "EthernetPowerControl.h"
avnisha 0:ca2e1d0254a6 5 // Need PowerControl *.h files from this URL
avnisha 0:ca2e1d0254a6 6 // http://mbed.org/users/no2chem/notebook/mbed-power-controlconsumption/
avnisha 0:ca2e1d0254a6 7
avnisha 0:ca2e1d0254a6 8 // Function to power down magic USB interface chip with new firmware
avnisha 0:ca2e1d0254a6 9 #define USR_POWERDOWN (0x104)
avnisha 0:ca2e1d0254a6 10 int semihost_powerdown() {
avnisha 0:ca2e1d0254a6 11 uint32_t arg;
avnisha 0:ca2e1d0254a6 12 return __semihost(USR_POWERDOWN, &arg);
avnisha 0:ca2e1d0254a6 13 }
avnisha 0:ca2e1d0254a6 14
avnisha 0:ca2e1d0254a6 15 DigitalOut myled1(LED1);
avnisha 0:ca2e1d0254a6 16 DigitalOut myled2(LED2);
avnisha 0:ca2e1d0254a6 17 DigitalOut myled3(LED3);
avnisha 0:ca2e1d0254a6 18 DigitalOut myled4(LED4);
avnisha 0:ca2e1d0254a6 19
avnisha 0:ca2e1d0254a6 20 Ticker blinker;
avnisha 0:ca2e1d0254a6 21 int count=1;
avnisha 0:ca2e1d0254a6 22
avnisha 0:ca2e1d0254a6 23 void blink() {
avnisha 0:ca2e1d0254a6 24 count = count << 1;
avnisha 0:ca2e1d0254a6 25 if (count > 0x08) count = 0x01;
avnisha 0:ca2e1d0254a6 26 myled1 = count & 0x01;
avnisha 0:ca2e1d0254a6 27 myled2 = count & 0x02;
avnisha 0:ca2e1d0254a6 28 myled3 = count & 0x04;
avnisha 0:ca2e1d0254a6 29 myled4 = count & 0x08;
avnisha 0:ca2e1d0254a6 30 }
avnisha 0:ca2e1d0254a6 31
avnisha 0:ca2e1d0254a6 32 int main() {
avnisha 0:ca2e1d0254a6 33 int result;
avnisha 0:ca2e1d0254a6 34
avnisha 0:ca2e1d0254a6 35 #ifdef NOETHER
avnisha 0:ca2e1d0254a6 36 // Normal mbed power level for this setup is around 690mW
avnisha 0:ca2e1d0254a6 37 // assuming 5V used on Vin pin
avnisha 0:ca2e1d0254a6 38 // If you don't need networking...
avnisha 0:ca2e1d0254a6 39 // Power down Ethernet interface - saves around 175mW
avnisha 0:ca2e1d0254a6 40 // Also need to unplug network cable - just a cable sucks power
avnisha 0:ca2e1d0254a6 41 PHY_PowerDown();
avnisha 0:ca2e1d0254a6 42 #endif
avnisha 0:ca2e1d0254a6 43
avnisha 0:ca2e1d0254a6 44 #ifdef LOCALPOWER
avnisha 0:ca2e1d0254a6 45 // If you don't need the PC host USB interface....
avnisha 0:ca2e1d0254a6 46 // Power down magic USB interface chip - saves around 150mW
avnisha 0:ca2e1d0254a6 47 // Needs new firmware (URL below) and USB cable not connected
avnisha 0:ca2e1d0254a6 48 // http://mbed.org/users/simon/notebook/interface-powerdown/
avnisha 0:ca2e1d0254a6 49 // Supply power to mbed using Vin pin
avnisha 0:ca2e1d0254a6 50 result = semihost_powerdown();
avnisha 0:ca2e1d0254a6 51 // Power consumption is now around half
avnisha 0:ca2e1d0254a6 52 #endif
avnisha 0:ca2e1d0254a6 53
avnisha 0:ca2e1d0254a6 54 // Turn off clock enables on unused I/O Peripherals (UARTs, Timers, PWM, SPI, CAN, I2C, A/D...)
avnisha 0:ca2e1d0254a6 55 // To save just a tiny bit more power - most are already off by default in this short code example
avnisha 0:ca2e1d0254a6 56 // See PowerControl.h for I/O device bit assignments
avnisha 0:ca2e1d0254a6 57 // Don't turn off GPIO - it is needed to blink the LEDs
avnisha 0:ca2e1d0254a6 58 //Peripheral_PowerDown(0xFFFF7FFF);
avnisha 0:ca2e1d0254a6 59
avnisha 0:ca2e1d0254a6 60 // use Ticker interrupt and Sleep instead of a wait for time delay - saves up to 70mW
avnisha 0:ca2e1d0254a6 61 // Sleep halts and waits for an interrupt instead of executing instructions
avnisha 0:ca2e1d0254a6 62 // power is saved by not constantly fetching and decoding instructions
avnisha 0:ca2e1d0254a6 63 // Exact power level reduction depends on the amount of time spent in Sleep mode
avnisha 0:ca2e1d0254a6 64 blinker.attach(&blink, 0.0625);
avnisha 0:ca2e1d0254a6 65 while (1) {
avnisha 0:ca2e1d0254a6 66 Sleep();
avnisha 0:ca2e1d0254a6 67 }
avnisha 0:ca2e1d0254a6 68 }