Hallo,
ich habe ein Problem bei beim Multitasking mit freeRTOS bei dem Arduino die Taskverwaltung nachzuvollziehen, bzw weshalb niedrigere Prio´s vorgezogen werden,,,, ![]()
Mir ist schon bewusst, das bei gleicher Prio der Scheduler Zeitscheibensteuerung anwendet, wie es zu dem "Busy- waiting"-Effekt kommen kann, wenn kein vTaskDelay vorhanden ist und wie der Ablauf bei verschiedenen Prioritäten sein müsste.
void vTask1( void *pvParameters ){
while(1) {
print("Hier ist Task 1");
vTaskDelay(2);
}
}
void vTask2(… analog dazu, Meldung "Hier ist Task 2"…
int main( void ){
xTaskCreate( vTask1,"Task1",130,NULL,1,NULL );
xTaskCreate( vTask2,"Task2",130,NULL,2,NULL );
vTaskStartScheduler();
}
Das obige erscheint mir noch logisch, also Task2 hat die höhere Prio, somit beginnt er mit Task2 und schreibt den Text, in der Delay-Zeit wendet er sich dann Task1 mit der nierigeren Prio zu, schreibt den Text und befindet sich wieder in einem Delay. Währen die Delayzeiten beider Tasksablaufen befindet er sich im Idle und wenn die Delayzeit von Task2 abgelaufen ist fängt er wieder von vorne an.
Ich habe nun 2 Bilder mit angefügt.
Ich verstehe nicht, warum in der Beschreibung unten mit der niedrigsten Prio angefangen wird. Warum das Semaphore dann blockiert ist mir bewusst, allerdings hätte ich anhand des sketches darauf getippt, dass mit der höchsten Prio begonnen wird und diese dann währen der Delayzeit durch das Semaphore eben die niedrigere Task behindert....
Oder habe ich etwas übersehen, bzw ist mir etwas nicht aufgefallen?
Vielen Dank schonmal, falls ihr mir weiterhelfen konntet ! ![]()

