I come from other kinds of MCUs, the likes of LPCs, PICs and AVRs, and they usually have an "idle" mode where the CPU can be "not working" whilst all other peripherals retain the full functionality, reducing power consumption to 10% or less of the full working power. With FreeRTOS I usually insert a couple of instructions at vApplicationIdleHook() to enter this mode and then the core consumes much less current than just idling in a while() loop.
With ESP32-WROVER, having not one but two processors that use up energy, I'd like to know whether there are techniques or procedures I can look into to reduce current consumption. I plan to use esp-idf for framework. The ones I can think from the top of my head are:
- Turn off any peripherals that are not in use.
- Use modem-sleep (in fact, 99% of the time I don't need either WiFi or Bluetooth).
- Turn off any unnecessary pull-ups or pull-downs to avoid leakage.
- First of all, I'd like to know for sure if there's no ESP32 equivalent to the aforementioned Idle mode of other architectures.
- Will the ESP32 consume as much energy whether all FreeRTOS tasks are blocked (except prvIdleTask) compared to having tasks in stupid loops like for(;;){}?
- Is there any way to turn off one of the cores when there's no need for it? (e.g. PRO_CPU)
- Are there other techniques available for lowering CPU consumption I'm not aware off?
Guillermo