@Doc_Arduino
Habe mir das noch ein par mal durchgelesen und verwundert mit dem Kopf geschüttelt....
Eine Nacht drüber geschlafen, um alle akuten Emotionen da raus zu bekommen
combie, du suchst wieder nach Vergleichen die hier nicht passen nur damit du mir etwas unterstellen kannst.
Es ist nicht in meinem Interesse dir irgendwas zu unterstellen.
Aber das kann ich ja hier mal tun.....
Warum machst du sowas?
Ich breite hier meine Überzeugungen aus.
Und dabei ist es mir auch relativ egal, ob diese dir schmecken, oder in den Kram passen.
Aber mir "niedrige Beweggründe" zu unterstellen, ist irgendwie nicht nett.
Hier gehts um µC,
Deine Ansicht zu delay() yield() und Multitasking im allgemeinen, erinnert mich irgendwie an deine ehemaligen Ansichten über OOP.
Deine original Ansagen zu OOP kann ich nur sinngemäß wieder geben...
OOP braucht man auf µC nicht
macht das überhaupt Sinn
Das geht doch auch alles mit Funktionen
Natürlich stimmen diese Aussagen, wenn man sie gegen die Realität abgleicht.
Dennoch hast du dich auf das Abenteuer C++ OOP eingelassen, und einen Großteil der Vorteile dieser Betrachtungsweise erkannt.
Ich glaube, du möchtest die OOP nicht mehr missen, darauf verzichten.
In dem Punkt hast du es von einer (latenten) Ablehnung zu einer Akzeptanz gebracht.
Das geht so weit, dass du es selber freiwillig nutzt, obwohl es doch faktisch nicht unbedingt nötig ist. Bist hier mittlerweile sogar der Vorreiter, in Sachen moderner Kompiler, geworden.
Einen Teil der Schuld, für diese Änderung der Gesinnung schreibe ich mir zu, denn wir haben uns mittlerweile Monate darüber unterhalten
In Sachen delay() yield() und Multitasking im allgemeinen, stehen wir an einem ähnlichen Punkt.
Hier gehts um µC, wir haben kein Betriebssystem onboard.
Wenn es men so einfach wäre.....
Der ESP8266 nutzt das coroutinen Konzept. Dieses ist im Arduino ESP8266 Core fest eingebaut.
Man MUSS es nutzen, da gibts keine Alternative, denn sonst frisst dich der Wachhund.
Entweder direkt, über delay() oder yield(), oder indirekt, da zwischen den loop() aufrufen automatisch yield() oder eins seiner Brüder, aufgerufen wird.
Auf dem ESP8266 haben wir also 2 Coroutinen , einmal die Schleife mit den loop() Aufrufen und zweitens die Wlan Grund Funktionalität.
Natürlich darfst du das ausblenden, wird der Sache aber nicht gerecht.
Der ESP32 nutz FreeRTOS. Dieses ist im Arduino ESP32 Core fest eingebaut.
Loop und das andere Arduino Gedöns läuft auf Core1, das Wlan Gedöns auf Core0.
Jetzt kann man sich damit zufrieden geben und sich auf einen Core beschränken, FreeTOS ignorieren/ausblenden.
Aber damit beschränkt man sich selber. Das kann aus meiner Sicht nicht das, oder ein, Ziel sein.
Zudem verschenkt man 50% der Rechenleistung, und echte Parallelverarbeitung.
Am Anfang evtl. ok, aber später, sollte man sich dem dann doch schon öffnen, meine ich.
Selbst für den kleinsten Arduino gibt es yield() und delay().
Und ich sehe keinen Grund das auszublenden, oder gar dagegen zu kämpfen.
Zusammengefasst:
Auf diesen µC existieren "Multitasking Systeme". Ob du willst, oder nicht.
Man kann sie im Kopf ausblenden, aber die Realität sieht anders aus.
Mit den größeren original Arduinos kenne ich mich nicht so aus, aber die Regel lautet wohl:
Je fetter der µC, desto vollwertiger das Multitasking System, was darauf läuft.
Aus meiner Sicht kann man sehr wohl das OOP Konzept auf die kleinen µC anwenden.
Aus meiner Sicht kann man sehr wohl die allgemein üblichen Multitasking Konzepte auf die kleinen µC anwenden.
In beiden Fällen beschränkt die Kleinheit mancher µC den Leistungsumfang.
Aber das spricht doch nicht gegen die Konzepte im allgemeinen.