Moin in die Runde,
ich verliebe mich gerade in den ESP32, und möchte mit diesem meinen 5-Achsen Kamera Bot fertig stellen, der vormals an den Ressourcen eines Nano (oder Mega) gescheitert war. Da ich immer noch mit C++ hadere, war ich vor einem Jahr froh, dass mich Combie auf seinen TaskMakro hin wies. Damit gelang es mir, die vielen Teilfunktionen in nicht blockierende Tasks zu granulieren, die wunderbar zusammen spielten.
Jetzt habe ich von ihm den Tipp bekommen, dass die ESP32 Implementation in der Arduino IDE automatisch freeRTOS mitbringt (bei klassischen AVRs kann man es per Lib einbinden), welches beim Task Handling wesentlich mächtiger ist. Zudem ermöglicht es, den 2. Core des ESP32 vollwertig einzusetzen. Dafür gibt es spezifische Funktionen von Espressiv, die freeRTOS um Multicore Funktionen erweitert. Das macht es insgesamt nicht leichter, denn man stößt auf viele Beispiele, die nur auf anderen Entwicklungsplattformen Sinn machen. Ich möchte jedoch in der Arduino Umgebung bleiben.
Die Doku von freeRTOS liest sich für mich an vielen Stellen wie chinesisch. Als API Referenz wahrscheinlich verständlich, aber zum Lernen (für ambitionierte Stümper wie mich) völlig ungeeignet. Also sucht man nach Tutorials zu freeRTOS in der Arduino Welt – und wird auch fündig. Allen (gefundenen) Beispielen ist gemein, dass sie das wichtigste ausklammern – nämlich das Zusammenspiel mehrerer Tasks.
Es gelingt mir problemlos, zwei (oder mehr) Tasks zu erzeugen, die – unabhängig voneinander – auf einem oder beiden Cores – LEDs zum blinken bringen. Es gelingt mir ebenfalls, eine Task zu erstellen, die sich selbst löscht, wenn sie einmal gelaufen ist. Was mir fehlt, ist ein Real World Beispiel, in welchem eine Task Daten sammelt, die von einer anderen Task im Bedarfsfalle (und nur dann) konsumiert werden.
Ich vermute, dass ich beim freeRTOS evaluieren nicht alleine bin. Vielleicht hat ja jemand von euch einen Link zu einer Art „freeRTOS for Dummies“. Oder ein weiterführendes Beispiel. Ich scheue nicht den Lernaufwand und auch Englisch ist kein Problem.
Danke für allen Input,
Demo