Was ist das Geheimnis des arduino `yield () " Funktion?
Den Arduino docs erklären yield()
bei https://www.arduino.cc/en/Reference/Scheduler mit Bezug auf die Aufgrund. Anscheinend ist es Teil des Scheduler-Bibliothek:
#include <Scheduler.h>
Allerdings kann ich nennen yield()
auf meinem Nano oder ESP8266 ohne die Scheduler-lib -- aber nur in meinem Hauptprogramm, nicht in include-Dateien. Auch die gehören nicht auf meiner nicht-Beiträge.
Was ist das Geheimnis, dass ich bin fehlt etwa yield()
oder - was bedeutet yield()
auf Arduino-Plattformen aus anderen Gründen als?
- Ist ein weiterer header, dass Sie in Ihrem Haupt-Datei, einschließlich
Scheduler.h
? - Nein. Sie können ein Skelett Skizze, die nur fordert, yield() und es kompiliert. Es muss eine verborgene Magie. Wenn der downvote ist deins bitte lassen Sie mich wissen, was ich haben sollte recherchiert über googlen nach oben und unten das Universum....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
yield()
- Funktion ist ebenfalls implementiert innerhalb der ESP8266 Bibliotheken:Das ist, warum Sie nennen
yield()
in Ihrem main-Programm, in der ESP8266-header enthalten ist.Sehen ESP8266 Sache Hookup Guide.
Update:
yield()
ist definiert in Arduino.h wie:yield()
ist auch erklärt, inhooks.h
wie folgt:So, auf die
Nano
es wohl nichts (es sei denn, Sie haben andere Bibliotheken#included
).void yield(void);
. Ich guck es weiter und kommen wieder zu Ihnen.yield()
ist ein code smell.Ausbeute ist eine "schwache" Funktion von Arduino-Kern für AVR. Ich sehe ein Anruf für Sie im inneren Verdrahtung.c.
Dies bedeutet, dass die yield () - Funktion wird ausgeführt, während der loop des delay-Funktion. So, die Ausbeute wäre für die Hintergrundverarbeitung, während der Verzug endet, oder für eine Funktion mit timeout-Funktion.
Hinweis: Ertrag definiert werden muss, die in der Anwendung/Skizze
UPDATE: Die Frage hat mich angeregt, ein wenig Beitrag über den Ertrag und andere versteckte Funktionen aus der arduino core.
Detaillierte Erklärung über yield()
Ich fand das sehr detaillierte Erklärung über die Verwendung von yield() in der ESP8266.
Von dem was ich weiß, ESP8266, müssen Sie die Wifi-Stack regelmäßig, oder deine ESP drop-out von Ihrem router. So werfen yield () - Funktion halten Sie Ihr Wifi-Stack läuft.