Pages: [1]   Go Down
Author Topic: Loop in Library  (Read 427 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1397
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das hört sich leider alles stimmig an.  smiley-confuse

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

Switzerland
Offline Offline
Faraday Member
**
Karma: 96
Posts: 4702
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Pages: [1]   Go Up
Jump to: