Go Down

Topic: Loop in Library (Read 592 times) previous topic - next topic

Hermi

Hallo zusammen,

gibt es eine Möglichkeit, eine Routine bei jedem Loop durchlauf aufzurufen, ohne dass dies explizit in Loop stehen muss? Quasi ein automatischer Aufruf.

mkl0815

Welchem Zweck soll das dienen? Das ein Nutzer sich nicht um eine Widerkehrende Aufgabe kümmern muss?
Das ist aus meiner Sicht ungünstig.

1) Du verbirgst Funktionalität vor dem Nutzer und erzeugst somit Seiteneffekte von denen Du als Ersteller einer Lib nicht wissen kannst, wie sie sich auf das Programm des Nutzers auswirken.
2) Du musst Dich darauf verlassen, das der Nutzer in seinem Programm dafür sorgt, das loop() tatsächlich regelmäßig, bzw. gleichmäßig durchlaufen wird. Da die Arduino-Plattform aber vorwiegend für Anfänger gedacht ist, die gerade wenn sie erst mit der Programmierung beginnen, gern mit delay() arbeiten, ist das eine gefährliche Annahme.

Dann ist es besser dem User in der Beschreibung / Anleitung der Lib den Hinweis zu geben, das eine bestimme Funktion / Methode regelmäßig aufgerufen werden muss, am besten einmal pro loop() Durchlauf. Das ist wesentlich transparenter und für den Nutzer nachvollziehbarer.

Mario.

uwefed


Hallo zusammen,

gibt es eine Möglichkeit, eine Routine bei jedem Loop durchlauf aufzurufen, ohne dass dies explizit in Loop stehen muss? Quasi ein automatischer Aufruf.

Ich sehe auch keine Notwendigkeit / Nützlichkeit.

Du kannst es erreichen indem Du die MAIN()-Funktion modifizierst. Aber das kannst Du nicht aus einer anderen Bibliothek heraus machen.

Ansonsten Timer Interrupt um regelmäßig was zu machen. Das ist dann aber nicht synchron mit loop();

Grüße Uwe

Hermi

Das hört sich leider alles stimmig an.  :~

Ich werde dann doch den Timer-Interrupt nutzen und die Synchronität anders abbilden.

pylon

Quote
Ich werde dann doch den Timer-Interrupt nutzen und die Synchronität anders abbilden.


Das würde ich vermeiden, wenn es geht. Jede Verwendung von Hardware, die nicht unbedingt notwendig ist, führt zum Inkompatibilitäten mit anderen Bibliotheken, die darauf angewiesen sind.

Go Up