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.
6 years, 1 month ago.
power management time functions return 0
When I invoke the functions mbed_time_sleep(), mbed_time_deepsleep(), mbed_time_idle() and mbed_uptime(), I get 0 for each.
<<code>>
printf("sleep time = %d\r\n", mbed_time_sleep());
printf("deep sleep time = %d\r\n", mbed_time_deepsleep());
printf("idle time = %d\r\n", mbed_time_idle());
printf("up time = %d\r\n", mbed_uptime());
<</code>>
DEVICE_LPTICKER is defined. I am using mbed-os-5.10.3. Is there anything else required to get the time values?
1 Answer
6 years, 1 month ago.
Hi Leon,
There might be some configuration parameters missed.
Please add below code snippet to mbed_app.json
mbed_app.json
"macros": [ "MBED_ALL_STATS_ENABLED" ]
And using debug profile when compilation
command
mbed compile -t [TOOLCHAIN] -m [TARGET_MCU] --profile mbed-os/tools/profiles/debug.json
Please let me know if you have any questions!
- Desmond, team Mbed
Hi Desmond,
I did as you suggested and I still have the same problem.
"macros": [ "MBED_ALL_STATS_ENABLED=1" ],
plain text <<code>> mbed compile -m MTS_DRAGONFLY_L471QG -t GCC_ARM --profile mbed-os/tools/profiles/debug.json
Every 5 seconds my application prints out:
sleep time = 0
deep sleep time = 0
idle time = 0
up time = 0
Leon
posted by 20 Nov 2018Hi Leon,
I attach the code snippet I am using for testing this feature, could you try this one and let me know how it goes? Thanks.
get sleep time with this snippet
#include "mbed.h" #include "mbed_stats.h" #if !defined(MBED_CPU_STATS_ENABLED) || !defined(DEVICE_LPTICKER) || !defined(DEVICE_SLEEP) #error [NOT_SUPPORTED] test not supported #endif DigitalOut led1(LED1); void print_stats() { mbed_stats_cpu_t stats; mbed_stats_cpu_get(&stats); printf("%-20lld", stats.uptime); printf("%-20lld", stats.idle_time); printf("%-20lld", stats.sleep_time); printf("%-20lld\r\n", stats.deep_sleep_time); } // main() runs in its own thread in the OS int main() { printf("%-20s%-20s%-20s%-20s\r\n", "Uptime", "Idle Time", "Sleep time", "DeepSleep time"); while (1) { led1 = !led1; print_stats(); Thread::wait(3000); } return 0; }