RoboterCC - Robotic Code Compiler
Forum Roboter.CC Webseite Fragen und Probleme Warten mit delay

Welcome

Nachrichten

Sie sind nicht eingeloggt.

Werbung

Letzte Themen

  • Keine Beiträge vorhanden

Site-Statistic

  • 7433 private projects
  • 378 public projects
  • 16180353 lines compiled
  • 58212 builds
NIBO @ facebook YouTube Twitter
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Fragen und Probleme zur Roboter.CC-Plattform können hier diskutiert werden.
  • Seite:
  • 1

THEMA: Warten mit delay

Warten mit delay 12 Jahre 1 Monat her #901

  • achim S.
  • achim S.s Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 441
Hallo Egon
hatte es ja bereits angekündigt und weil du so Neugierig bist, habe ich auf die schnelle was zusammenbebaut. Die Idee stammt nicht von mir, wahrscheinlich von johann. Das nachfolgende Sückchen Code wird wahrscheinlich allen bekannt.

delay(500);
leds_set_status(LEDS_RED,5);
delay(500); leds_set_status(LEDS_RED,0);
delay(500);
leds_set_status(LEDS_GREEN, 5);

Der Prz hat dabei nur die Aufgabe die LED ein oder auszuschalten. Die Restliche Zeit gammelt er so in der Gegend rum ind sonnt sich. Wenn man grössere Prg ansieht, fällt es auf, das viele delay drin sind. Wenn man es zusammenrechnet kommen ein paar Sekunden raus. Für einen Prz eine elenmd lange Zeit, die Nutzlos ist.
Es gibt noch die sogemammte Scheduler. Die erzeugen ein Pseudo Multitasting. Das heisst wie bei Windows, das mehrere Prozesse gleichzeitig ausgführt werden können. Dazu ist der 128 wahrscheinlich zu klein. Wir wollen noch was anderes machen.

static uint16_t zaehler=0;

{
if (zaehler>=3333)
{
leds_set_status(1,5);
}

if (zaehler>=6666)
{
leds_set_status(2,4);
}
zaehler++;
delay(1);

Anstatt 1 Sekunde oder 1000 mSekunden auf ein Ereignis zu warten, machen wir zwischen durch was anderes. Durch die Zerlegung in tausend einzelne Schritte, können wir 1000 einzelne Teile ausführen. Jede Anwendung bekommt nur 1 ms Zeit, danach machen wir was andres. Das erreichen wir durch den Zaehler zusammen mit delay. Das obere kleine Stück Prg schaltet unabhängig 2 LED zu unterschiedlichen Zeiten. Ich kann Taster abfragen, LED an oder aus, Sensoren abfragen. Immer für 1 ms, danach was anderes. Je nach dem es programmiert wird, kann man viel machen. Und es geht mit der Standart Bibliothek. Was wollen wir mehr. Gefällt es dir Egon? Falls Fehler sind zerreisse mich nicht gleich in der Luft.Schönen abend an alle.
achim
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Warten mit delay 12 Jahre 1 Monat her #902

  • Egon
  • Egons Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 316
Hallo achim S.

Dein "Programm" - wenn Du mich schon direkt fragst - nein, es gefällt mir nicht. Ich dachte, Du wolltest nicht mehr mit delay() arbeiten - jetzt machst Du es doch. Soll dieser Code-Schnipsel in einem zyklischen Programm laufen oder was soll das werden?

Dein Zähler wird zyklisch inkrementiert (nicht mal in einer ISR!!)- Du kannst mit diesem "Programm" doch überhaupt nicht garantieren, wie lange es dauert, bis wieder der zaehler++ - Aufruf erfolgt!

Und bei delay - da schläft der Proz IN JEDEM FALL - und wenn es nur 1ms ist!!

Und daß der 128 für Multitasking zu klein ist - das ist Unsinn!

Egon
lokalisieren, eliminieren, Vollzug melden
Letzte Änderung: 12 Jahre 1 Monat her von Egon.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Warten mit delay 12 Jahre 1 Monat her #903

  • achim S.
  • achim S.s Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 441
Du hast Recht Egon, der Prz schläft hier 1ms. Auf jeden Fall aber nicht mehrere Sekunden wie anderen Prg. Auf jeden Fall kann man hier aber schon mehrere Aufgaben fast nacheinander ausführen. Es darf aber im Prg sonst kein delay verwendet werden. Es gibt hier zu noch andere Anwendungen und weitergehende Artikel. Diese kommen auch noch. Muss aber erst mal eines fertig haben, bevor es weiter geht. Bau doch erst mal eine Funktion zusammen, die alle delay ersetzt und genau so zu verwenden ist. Eigentlich erscheint dieser Zähler nur einmal im Prg und alle anderen Sachen beziehen sich darauf. Wenn ich sagen wir mal 50 delay im Prg habe und diese durch diese Funktion ersetze, bekomme ich einen starken Gewinn an Geschwindigkeit. Dadurch kan ich auch verschidne Funktion gleichzeitig ausführen. Die Sensoren könne dadurch schneller abgefragt werden und damit auf Gefahren reagieren. Vielleicht kennst du eine bessere Möglichkeit. Bitte immer daran denken, mit Standart Bibliothek.
achim
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Warten mit delay 12 Jahre 1 Monat her #904

  • Egon
  • Egons Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 316
Hallo achim S.

1.) Ich kenne KEIN Programm, wo der Proz mehrere Sek lang schläft - kein halbwegs normaler Programmierer würde das implentieren.

2.) Mit diesem "Programm" kann man wirklich nur "fast" mehrere Aufgaben nacheinander ausführen - stimmt.

3.) Delay() sollte man tunlichts NIE verwenden (siehe 1.))!

4.) In all meinen Programmen verwende ich grundsätzlich NIE delay, sondern IMMER timer-isrs!!!!

5.)Es ist nicht korrekt zu behaupten,
Wenn ich sagen wir mal 50 delay im Prg habe und diese durch diese Funktion ersetze, bekomme ich einen starken Gewinn an Geschwindigkeit. Dadurch kan ich auch verschidne Funktion gleichzeitig ausführen
. Durch diese Funktion vergeudest Du doch immer 1ms (delay(1))!

6.) Ich arbeite grundsätzlich mit der Standart Bibliothek, habe mir aber selbst dazu eine eigene lib gemacht.


7.) verschiedene Fkt gleichzeitig ausführen geht bei den hier verwendeten Fkt nicht, es wird alles sequentiell abgearbeitet; man kann nur parallel Fkt abarbeiten (= verschiedene Fkt gleichzeitig) mittels multitasking, und selbst RTOS ist kein echtes multitasking OS.


8.) - nichts für ungut, alter Freund ;)

Egon
lokalisieren, eliminieren, Vollzug melden
Letzte Änderung: 12 Jahre 1 Monat her von Egon.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: Warten mit delay 12 Jahre 3 Wochen her #954

  • achim S.
  • achim S.s Avatar
  • OFFLINE
  • Gold Boarder
  • Beiträge: 441
Hallo da draussen
habe ein neues Prg reingstellt. Diesmal läuft es ohne delay. Man kann es als Grund für eigene Prg nehmen und überall einbauen. Vom Aufwand ist es relativ klein und läuft ohne zusätzliche Datein.
Viel Spass
achim
Der Administrator hat öffentliche Schreibrechte deaktiviert.
  • Seite:
  • 1
Ladezeit der Seite: 0.041 Sekunden

Werbung