ESP32 xTaskCreatePinnedToCore to core 0 with Arduino occasionally slow UI updates

Important: unclear posts may not receive useful answers.

Before posting

  • Get familiar with Markdown to format and structure your post
  • Be sure to update lvgl from the latest version from the master branch.
  • Be sure you have checked the relevant part of the documentation.
  • If applicable use the Simulator to eliminate hardware related issues.

Delete this section if you read and applied the mentioned points.


What MCU/Processor/Board and compiler are you using?

ESP32 + ILI9341

What LVGL version are you using?


What do you want to achieve?

Run the display task on core 0 on a ESP32 with Arduino

What have you tried so far?

  • Removed background image
  • Verified that on main loop no slowdowns happen
  • Removed network tasks out of main loop (Like MQTT updates and wifi manager)

Code to reproduce

see :

When I DISPLAY_TASK_IN_MAIN_LOOP is disabled I am setting up that display updates happen on core 0 of the esp using an FreeRTOS task using xTaskCreatePinnedToCore. When doing this I noticed that my display updates run slow occassionally, this is measured here:
display_loop simply runs lv_task_handler();
Touch messages from the UI and updates from the main loop to the UI are send using a FreeRTOS message queue.
For some time the display updates well within 100ms, but sometimes it takes up to 1000ms (just one time) and you can visibly see the UI updating (top to bottom) and touch becomes slow. Then it runs fast again for a few seconds (this seems rather random…) and then grinds to a halt again for one frame…

The code block(s) should be formatted like:

Screenshot and/or video