Core-0 Time for a particular Task
Posted: Tue Aug 29, 2023 10:27 am
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 )
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,
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,
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
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 )
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,
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,
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