#if CONFIG_FREERTOS_UNICORE
#define ARDUINO_RUNNING_CORE 0
#else
#define ARDUINO_RUNNING_CORE 1
#endif
#ifndef LED_BUILTIN
#define LED_BUILTIN 13
#endif
// define two tasks for Blink & AnalogRead
void task1( void *pvParameters );
void task2( void *pvParameters );
void task3( void *pvParameters );
void task4( void *pvParameters );
// the setup function runs once when you press reset or power the board
void setup() {
// initialize serial communication at 115200 bits per second:
Serial.begin(115200);
// Now set up two tasks to run independently.
xTaskCreatePinnedToCore(
task1
, "Task1" // A name just for humans
, 1024 // This stack size can be checked & adjusted by reading the Stack Highwater
, NULL
, 3 // Priority, with 3 (configMAX_PRIORITIES - 1) being the highest, and 0 being the lowest.
, NULL
, ARDUINO_RUNNING_CORE);
xTaskCreatePinnedToCore(
task2
, "task2"
, 1024 // Stack size
, NULL
, 4 // Priority
, NULL
, ARDUINO_RUNNING_CORE);
xTaskCreatePinnedToCore(
task3
, "task3"
, 1024 // Stack size
, NULL
, 1 // Priority
, NULL
, ARDUINO_RUNNING_CORE);
xTaskCreatePinnedToCore(
task4
, "task4"
, 1024 // Stack size
, NULL
, 2 // Priority
, NULL
, ARDUINO_RUNNING_CORE);
// Now the task scheduler, which takes over control of scheduling individual tasks, is automatically started.
}
void loop()
{
// Empty. Things are done in Tasks.
}
/*--------------------------------------------------*/
/*---------------------- Tasks ---------------------*/
/*--------------------------------------------------*/
void task1(void *pvParameters) // This is a task.
{
(void) pvParameters;
for (;;){
Serial.println("Ejecutando tarea 1");
vTaskDelay(750 / portTICK_PERIOD_MS);//Cada cuanto se ejecuta la tarea
}
vTaskDelete(NULL); //Si salgo elimino la tarea
}
void task2(void *pvParameters) // This is a task.
{
(void) pvParameters;
for (;;){
Serial.println("Ejecutando tarea 2");
vTaskDelay(500 / portTICK_PERIOD_MS);//segun cada cuanto se va a ejecutar la tarea mas alla de prioridades
}
vTaskDelete(NULL);
}
void task3(void *pvParameters) // This is a task.
{
(void) pvParameters;
for (;;){
Serial.println("Ejecutando tarea 3");
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
vTaskDelete(NULL);
}
void task4(void *pvParameters) // This is a task.
{
(void) pvParameters;
for (;;){
Serial.println("Ejecutando tarea 4");
vTaskDelay(1500 / portTICK_PERIOD_MS);
}
vTaskDelete(NULL);
}