INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
auslagern von Funktion aus der void loop?
21.06.2015, 21:00
Beitrag #9
RE: auslagern von Funktion aus der void loop?
Richtig Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2015, 13:49
Beitrag #10
RE: auslagern von Funktion aus der void loop?
nun aber mal angenommen ich würde eine Zeitfunktion ohne delay reinbringen wollen... startet die dann in der "tuwas ()" nicht auch immer von vorn?

bzw.... wenn ich die loop () mit einer Zeitfunktion "bremse" wirkt sich das ja auf alle "tuwas ()" aus (?)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2015, 14:26
Beitrag #11
RE: auslagern von Funktion aus der void loop?
(22.06.2015 13:49)MaHaI976 schrieb:  bzw.... wenn ich die loop () mit einer Zeitfunktion "bremse" wirkt sich das ja auf alle "tuwas ()" aus (?)
Eine bremse wirkt sich ja auf die Ablaufzeit der Funktion loop() aus. Die tuwas() würden dann ohne Zeitverzug abgearbeitet werden. Hier mal ein Beispiel:

Code:
void loop {
delay(500);
tuwas();
delay(1000);
tuwas();
delay(333);
tuwas();
}

void tuwas(){
Serial.print("ich tue etwas");
}
Nach dem Start von loop() passiert erst mal 500ms nichts. Dann wird ein "ich tue etwas" geschrieben. Dann wieder eine Pause von 1000ms bis wieder "ich tue etwas" geschrieben wird. Jetzt wieder eine Pause von 333ms bis "ich tue etwas" geschrieben wird.
Jetzt ist die loop() abgearbeitet und fängt wieder von vorne an. Somit hast du in Summe eine Pause von 1833ms.

Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2015, 15:24 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2015 15:27 von MaHaI976.)
Beitrag #12
RE: auslagern von Funktion aus der void loop?
Wie müßte ich da aber "tuwas ()" gestalten, damit dort z.b. die Aktualisierung jede einzelne ms erfolgt?

Also quasi so, dass die loop () nur alle "tuwas1 ()", "tuwas2" () etc. anstößt und die dann laufen, bis se fertig sind, ohne auf einen neuen Trigger von loop () warten zu müssen...

mal angenommen, ich würde das fading hierauf basierend machen:

Code:
void loop()
{
  float something = millis()/1000.0;
  int value = 128.0 + 128 * sin( something * 2.0 * PI  );
  analogWrite(ledPin,value);
}

also in angepaßter Form, dass die Sinuskurve nur hochläuft, so lange die Ausgangsgröße unter dem Zielwert ist....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2015, 15:48
Beitrag #13
RE: auslagern von Funktion aus der void loop?
Hi,

ich lese aus Deiner Frage heraus, daß Du sowas wie Threads auf dem
Arduino brauchst. Also unabhängige Programmteile, die während der Loop
Verarbeitung weiterlaufen. Oder verstehe ich das falsch ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2015, 17:33
Beitrag #14
RE: auslagern von Funktion aus der void loop?
jupp.... scheint so... wie funktioniert das?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2015, 18:32
Beitrag #15
RE: auslagern von Funktion aus der void loop?
auf den AVrs ist das ziemlich schwierig, wenn es richtig funktionieren soll. Ich kenne da nur ziemlich halbherzige (protothread) oder unzureichende (über millis) oder wahnsinnig komplizierte Ansätze (RTOS, OSEK).

Auf dem Due geht es schon recht gut, weil der ARM Prozessor von sich aus MT-fähig ist. Es gibt da eine lib "scheduler", mit der du neben loop() als Task noch weitere Tasks (loop2, loop3,...) parallel starten kannst.
http://www.arduino.cc/en/pmwiki.php?n=Re.../Scheduler

Das und der viel größere Speicher sind die Gründe, warum ich schon relativ lange den Due anstatt der AVRs benutze.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.06.2015, 18:42
Beitrag #16
RE: auslagern von Funktion aus der void loop?
Danke für die Tipps... ich lese mich da mal rein.... ich hab nun 3 Megas hier liegen, mit denen ich das machen möchte...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Question Webserver, Client, Loop Marc2014 6 369 29.07.2016 21:04
Letzter Beitrag: Marc2014
  Funktion mit Parameterübergabe - u8g torsten_156 8 404 22.06.2016 18:53
Letzter Beitrag: Pit
  Funktion in Loop einmalig ausführen Haustechno 4 647 09.03.2016 22:43
Letzter Beitrag: Haustechno
  HC-05 Modul auf Funktion prüfen. arduinofan 2 365 03.02.2016 19:18
Letzter Beitrag: arduinofan
  Eine Funktion vorher definieren ? arduinofan 23 2.030 30.12.2015 08:42
Letzter Beitrag: amithlon
  Loop reset Atwist 27 1.906 10.12.2015 16:58
Letzter Beitrag: hotsystems
  Funktion/Methode mit mehr als einem Ausgangswert Marduino_UNO 18 1.269 20.10.2015 10:30
Letzter Beitrag: Marduino_UNO
  Unterprogram, loop, while Marc2014 1 808 27.08.2015 19:11
Letzter Beitrag: hotsystems
  PulseIn-Funktion unklar alpenpower 6 1.288 24.07.2015 10:05
Letzter Beitrag: Scherheinz
  AnalogRead aus Loop-Schleife auskoppeln dna5544 7 1.482 16.07.2015 12:31
Letzter Beitrag: dna5544

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste