Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
9 years, 7 months ago.
power saving LPC1768
for me it doesn't work unless I turn on another Peripheral
PCRIT The I2C0 interface power/clock control bit. 0 PCSPI The SPI interface power/clock control bit. 0
Peripheral_PowerDown(0xFF7F7FFF);
everything else is 1
so did I turned on only 2 Peripherals ? or did i turned off 2 Peripheral only?
0
#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); } Serial device(p28, NC); // tx, rx DigitalOut led1(LED1); Ticker blinker; int count=1; void blink() { led1=!led1; } 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 blinker.attach(&blink, 1.2); 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(0xFE7F7FFF);// led:(0xFF7F7FFF); ---- led+serial:0xFE7F7FFF ------ // 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 while (1) { Sleep(); } }
is there a way to wake mbed from Deep sleep because it consumes less power
Question relating to:
2 Answers
9 years, 3 months ago.
thought I'd confirm power measurements on mbed LPC1768 (96MHz). Measurements were OK for Sleep(), peripherals ON, peripherals OFF, PHY off, and DeepSleep(). I pasted in the semihost_powerdown(), but it seemed to have NO effect (5v power into Vin, USB not connected)?? PowerDown() and DeepPowerDown() measured the same as DeepSleep()
140.0 ma while(1); default settings (hacked USB cable for DMM current measurements) 127.9 ma Sleep() 91.6 ma PHY off 86.7 ma all peripherals OFF ( 109.5ma all ON) 59.6 ma DeepSleep()
Any thoughts on how to get semihost_powerdown() to work?
Did you update the firmware for the interface as stated above?
// 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
Ahhh. I had never updated firmware (above results were with 16457). I upgraded to 141212 and semihost_powerdown() seemed to work. Sleep() with peripherals off and PHY off was 112.4 ma, then adding semihost_powerdown() dropped to 51.8ma, then 19.6ma with DeepSleep().
generally power consumption was higher with newer firmware (?). With hacked USB cable and default settings (while(1)), power was 169.8 ma
Also, the commentary suggested that semihost_powerdown() would have no effect if USB cable was plugged in. With the 141212 firmware that was NOT the case. luckily, my power testing program had a 12 second blink prolog that allowed me time to copy new program to MBED before the USB disk disappeared from semihost_powerdown()
posted by 02 Aug 20158 years, 2 months ago.
I did some experiments and I got several findings as follows.
When using the firmware 141212:
1. Both mbed_interface_powerdown() (mentioned in https://developer.mbed.org/handbook/Beta) and semihost_powerdown() (mentioned in https://developer.mbed.org/users/simon/notebook/interface-powerdown/) do shut down the magic interface.
2. With magic interface off only, the power consumption of a simple program (1 LED blinking) is about 72 mA.
3. With PHY off only, the power consumption of a simple program (1 LED blinking) is about 112 mA.
4. With both magic interface and PHY off, the power consumption of a simple program (1 LED blinking) is about 67 mA.
5. If you want to program your mbed with magic interface off in the last program, you need to hold the reset button and plug-in the USB cable and download the new program into the mbed.
When using the firmware mentioned in (https://developer.mbed.org/users/simon/notebook/interface-powerdown/):
1. The mbed_interface_powerdown() does not work but the semihost_powerdown() works fine.
2. With magic interface off only, the power consumption of a simple program (1 LED blinking) is about 104mA.
3. With PHY off only, the power consumption of a simple program (1 LED blinking) is about 96 mA.
4. With both magic interface and PHY off, the power consumption of a simple program (1 LED blinking) is about 67 mA.
5. If you want to program your mbed with magic interface off in the last program, download the new program like usual.
It looks like both firmware can achieve 67 mA power consumption when magic and PHY are off. However, using the second firmware may have better flexibility than the first one when you need to reprogram your mbed frequently.
by the way, running this code draws 86mA @5v. when i use DeepSleep .. it draws less then that mybe 55mA which is much better ..
I searched about it, deep sleep mode does not turn the watch dog off .. but I couldn't apply simon's code into the code any help ?
posted by hsn alattar 07 Apr 2015