-         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 35

Thema: Warum: Vermeide Bit-Variablen! ??

  1. #21
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    41
    Beiträge
    1.271
    Anzeige

    LiFePo4 Akku selber bauen
    Hallo! Auf der Googlesuche nach dem genauen Effekt von "Goto 0" bin ich auf diesem Thread gestoßen...
    Hier lese ich:
    - möglichst subs oder funktionen vermeiden, sondern gosub verwenden
    Bevor ich mir nun die Mühe mache meinen ganzen Code umzustellen um den Effekt zu testen - ist diese Meinung noch aktuell und begründet?

    Meine zweite Frage bleibt: Hat goto 0 den gleichen Effekt wie ein Hardware Reset?
    Viele Grüße, William
    -> http://william.thielicke.org/

  2. #22
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    35
    Beiträge
    4.255
    Zitat Zitat von Willa
    Meine zweite Frage bleibt: Hat goto 0 den gleichen Effekt wie ein Hardware Reset?
    Nicht ganz. Das Programm wird wieder vom Startpunkt aus ausgeführt, aber die Hardware wird nicht neu initalisiert. Alle Register behalten die alten Werte.
    Einen wirklichen Reset kann man nur mit dem Watchdogtimer auslösen.

  3. #23
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    50
    Beiträge
    765
    Nein, denn die Variablen und Register behalten ihre Werte und ein evtl vorhandener Bootloader wird nicht angesprungen. Die Pegel an den Ausgängen ändern sich auch nicht.
    Du springst einfach nur an den Anfang des Programmes zurück. Einen Reset löse ich mit Hilfe des Watchdogs oder einer externen Beschaltung aus.

    edit: Zu lange mit der Antwort gewartet.....
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  4. #24
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    41
    Beiträge
    1.271
    okay, danke für die Hinweise. Dann werde ich mich mal über den Watchdog informieren. Hat noch jemand einen Tipp zu meiner ersten Frage? Gosub oder sub? Was ist "besser"?
    Viele Grüße, William
    -> http://william.thielicke.org/

  5. #25
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    56
    Beiträge
    1.080
    Gosub mit globalen Variablen ist schneller, da bei Funktionen und Sub die Werte umständlicher übergeben werden. Macht sich aber nur bemerkbar bei zeitkritischen Sachen oder sehr häufigen Aufrufen.

    Gruß MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  6. #26
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    41
    Beiträge
    1.271
    Hi Meckpommer!
    Macht sich aber nur bemerkbar bei zeitkritischen Sachen oder sehr häufigen Aufrufen.
    Ich denke diese Voraussetzungen erfüllt mein Tricopter... 7 Subs die alle mit ca. 350 Hz aufgerufen werden (eben so schnell wie möglich). Dann teste ich das mal und schreibe hier meine Erfahrungen nieder.
    Viele Grüße, William
    -> http://william.thielicke.org/

  7. #27
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    56
    Beiträge
    1.080
    Jo, das müßte sich schon bemerkbar machen.

    Bin gespannt auf deine Ergebnisse!

    Gruß MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

  8. #28
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    41
    Beiträge
    1.271
    Ich habs eben ausprobiert. Unter den gegebenen Umständen kann ich bei meiner Anwendung keinen Unterschied feststellen. Beide Varianten laufen gleich schnell.
    Der Reset per Watchdogtimer klappt prima!
    Viele Grüße, William
    -> http://william.thielicke.org/

  9. #29
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.07.2004
    Ort
    Südhessen
    Beiträge
    1.312
    Es gibt einen Unterschied zwischen Software-Reset und Hardware-Reset, genau wie uwe schon sagte, sind einige Initialisierungen dann hinfällig. Es gibt andere, bessere Methoden. Die geeignetste ist wohl die Watchdog-Methode, genau wie Uwe sagte.
    Mehrere Threads dazu gibt es hier im Forum, auch aus philosophischer Sicht.

    Wer aus dem Assembler-Bereich kommt, für den stellt ein Software-Reset nicht wirklich einen Reset dar. (Allein aus dem Grunde, dass lediglich Sachen ausgeführt werden, die man auch selber machen könnte.)

  10. #30
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.07.2007
    Alter
    56
    Beiträge
    1.080
    @ Willa,

    ich habe bei der Umstellung von Funktionen und Prozeduren geringe aber deutliche Unterschiede feststellen können. Die Frage ist natürlich, wie dein Programm konkret aussieht.
    Je mehr Parameter übergeben wurden, desto deutlicher ist der Unterschied. Wenn nun (um Prozeduren und Funktionen zu vermeiden) diese Parameter jedes mal vor dem Aufruf in andere Variablen geschaufelt werden, damit es zum Code in den Funktionen bzw. Prozeduren passt, dann ist der positive Effekt fast schon wieder komplett aufgebraucht.
    Mal "grob ins Blaue" gefaselt kannst du bei der Gosub-Variante vielleicht 2-4 Takte sparen + 4 Takte je Parameter + noch ein paar je lokal dimensionierter Variable.
    Ob es sich lohnt, ist natürlich immer abhängig von deinem Programm. Bei der Programmierung des Beinsystems für meinen Bot war es extrem wichtig, bei deinem coolen Kopter macht es vielleicht nur einen unmerkbaren Unterschied von 0.1%.

    Subs und Funktionen können jedenfalls die Lesbarkeit eines Programms erheblich verbessern, weswegen ich niemals generell auf reine GOSUBs umstellen würde.
    Was nützt einem das schnellste Programm, wenn man nachher vor lauter GOSUBs nichts mehr editieren kann

    Gruß MeckPommER
    Mein Hexapod im Detail auf www.vreal.de

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •