From 605fa823c60e66de422eed56e8aac98552b152e2 Mon Sep 17 00:00:00 2001 From: Guillermo Marcel Date: Mon, 14 Apr 2025 11:18:42 -0300 Subject: [PATCH] research: testing with multitask and add samples --- esp32/multiTaskTesting.h | 76 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 esp32/multiTaskTesting.h diff --git a/esp32/multiTaskTesting.h b/esp32/multiTaskTesting.h new file mode 100644 index 0000000..191864c --- /dev/null +++ b/esp32/multiTaskTesting.h @@ -0,0 +1,76 @@ +TaskHandle_t Task1; +TaskHandle_t Task2; +const int led1 = 2; +const int led2 = 4; + +void stp(){ + pinMode(led1, OUTPUT); + pinMode(led2, OUTPUT); + + xTaskCreatePinnedToCore( + Task1code, /* Task function. */ + "Task1", /* name of task. */ + 10000, /* Stack size of task */ + NULL, /* parameter of the task */ + 1, /* priority of the task */ + &Task1, /* Task handle to keep track of created task */ + 0); /* pin task to core 0 */ + // xTaskCreate(Task1code, "task1", 1000, NULL, 1, NULL); + delay(500); + + xTaskCreatePinnedToCore( + Task2code, /* Task function. */ + "Task2", /* name of task. */ + 10000, /* Stack size of task */ + NULL, /* parameter of the task */ + 1, /* priority of the task */ + &Task2, /* Task handle to keep track of created task */ + 1); /* pin task to core 1 */ + // xTaskCreate(Task2code, "task2", 1000, NULL, 1, NULL); + delay(500); +} + + +//Task1code: blinks an LED every 1000 ms +void Task1code( void * pvParameters ){ + Serial.print("Task1 running on core "); + Serial.println(xPortGetCoreID()); + + for(;;){ + digitalWrite(led1, HIGH); + delay(1000); + digitalWrite(led1, LOW); + delay(1000); + } +} + +//Task2code: blinks an LED every 700 ms +void Task2code( void * pvParameters ){ + Serial.print("Task2 running on core "); + Serial.println(xPortGetCoreID()); + + for(;;){ + digitalWrite(led2, HIGH); + delay(700); + if(!s.isFired){ + digitalWrite(led2, LOW); + delay(700); + } + + } +} + + +void killOne(){ + // Kill task1 if it's running + if(Task1 != NULL) { + eTaskState taskState= eTaskGetState(Task1 ); + if(taskState == eDeleted){ + Serial.println("Task deleted"); + }else{ + Serial.println("No more green"); + vTaskDelete(Task1); + } + + } +} \ No newline at end of file