Hi there,
We are looking to reduce our power consumption and for that reason we want to enable:
We've got the Tickless Idle running using configUSE_TICKLESS_IDLE 2 , similar to the example tickless example, which already reduces the power consumption considerably.
Now we want to reduce the CPU speed when going into tickless idle mode to save some more. For this I started from the power_mode_switch_rtos example, which worked just fine.
When porting it to my existing application (without tickless idle) and testing the application in low speed run mode, I noticed that logging to the console (uart) crashes the application, why is this an issue?
Additionally I tried to only enable & disable the low speed run mode when going in and out tickless idle mode (as there is no logging, I imagined no problems), with the GPT clocksource set to kGPT_ClockSource_Osc so the wakeup time is correctly calculated.
This however doesn't seem to be working at all, it hangs in lpm.c in LPM_SetPowerMode while waiting to get s_mutex: xSemaphoreTake(s_mutex, portMAX_DELAY). However I verified that the LPM is initialized before calling this.
I know this is a very vague description, but my question is more general: I notice that the application goes into tickless idle mode for a couple of ms sometimes, is it a good approach in this case to switch between power run modes in this case?
Are application is mostly idle, but it most maintain an MQTT connection with the server to keep on being responsive.
We are using FreeRTOS 10.4.3
Thank you in advance.
Hi @Geiger8759,
It might be worth taking a look into how exact the porting was done to integrate both of these features. However, even though low speed run is designed to transition back to normal run in a quick manner, with such low times between transitions (in the couple of ms), perhaps the power consumption saving will not be substantial enough.
BR,
Edwin.