/**************************************************
Beispiel 2: Präemptives Multitasking
***************************************************/
//--------------------------------------------------
// Pin-Zuweisungen
#define PIN_LED_AMPEL_RECHTS_ROT 18
//--------------------------------------------------
TaskHandle_t taskID = NULL;
//--------------------------------------------------
void setup() {
Serial.begin(115200);
//---
// Funktion = Task_LED1
// Name = -
// Stackgrösse = 8192 Word
// Parameter = -
// Priorität = 2 (0..16 = low..high)
// Handle = -
// Core = 0 (0=Core 0, 1=Core 1)
xTaskCreatePinnedToCore(Task_LED1, NULL, 8192, NULL, 2, &taskID, 0);
Serial.println("System gestartet...");
}
//--------------------------------------------------
void loop() {
//int core_id = xPortGetCoreID();
//int core_id = uxTaskGetCoreID(taskID);
TaskStatus_t taskStatus;
vTaskGetInfo(taskID, &taskStatus, pdTRUE, eInvalid);
int core_id = taskStatus.xCoreID;
int p = uxTaskPriorityGet(NULL);
Serial.print("Haupttask auf Core ");
Serial.print(core_id);
Serial.print(" mit Priorität ");
Serial.println(p);
delay(1000);
}
//--------------------------------------------------
void Task_LED1(void *pvParameters) {
//---
// setup
pinMode(PIN_LED_AMPEL_RECHTS_ROT, OUTPUT);
//---
// endlos loop
while (true) {
digitalWrite(PIN_LED_AMPEL_RECHTS_ROT, HIGH);
delay(500);
digitalWrite(PIN_LED_AMPEL_RECHTS_ROT, LOW);
delay(500);
}
}