Page 1 of 1

Core-0 Time for a particular Task

Posted: Tue Aug 29, 2023 10:27 am
by meakash
So, I have defined a core 0 task with
xTaskCreatePinnedToCore(MotorCurrent_TaskCode, "MotorCurrent_Task", 2000, NULL, tskIDLE_PRIORITY, &MotorCurrent_Task, 0);

and I have made sure with the .ini file that everything runs on core-1, as I also have BLE in the code (I checked, notify does use Core-1 in BLECharacteristic.cpp and other library files )

Image

Now,
void MotorCurrent_TaskCode(void *pvParameters)
{
esp_timer_handle_t timer = NULL;
uint64_t startTime, endTime;
uint64_t executionTimeMicros;

esp_timer_create_args_t timer_config = {
.callback = NULL,
.name = "task_timer"
};
esp_timer_create(&timer_config, &timer);

for (;;)
{
startTime = esp_timer_get_time();
motor_protection.read_Current_Sense();
endTime = esp_timer_get_time();

executionTimeMicros = endTime - startTime;
Serial.printf("Core 0 Execution Time: %llu microseconds\n", executionTimeMicros);
}
}

Now, the Output,
Image

What I am trying to find is, why this difference in the Execution Time

This is a very time sensitive task, I have a window of 4 ms and I need to take maximum samples of Motor Current.
Also,
Image

This time data is when the Motor was not running, so it will just check the if loop and exit is what I believe

please help me with wherever I am wrong