Nicht ganz. Das Programm wird wieder vom Startpunkt aus ausgeführt, aber die Hardware wird nicht neu initalisiert. Alle Register behalten die alten Werte.Zitat von Willa
Einen wirklichen Reset kann man nur mit dem Watchdogtimer auslösen.
Hallo! Auf der Googlesuche nach dem genauen Effekt von "Goto 0" bin ich auf diesem Thread gestoßen...
Hier lese ich:
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?- möglichst subs oder funktionen vermeiden, sondern gosub verwenden
Meine zweite Frage bleibt: Hat goto 0 den gleichen Effekt wie ein Hardware Reset?
Viele Grüße, William
-> http://william.thielicke.org/
Nicht ganz. Das Programm wird wieder vom Startpunkt aus ausgeführt, aber die Hardware wird nicht neu initalisiert. Alle Register behalten die alten Werte.Zitat von Willa
Einen wirklichen Reset kann man nur mit dem Watchdogtimer auslösen.
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! \/
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/
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
Hi Meckpommer!
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.Macht sich aber nur bemerkbar bei zeitkritischen Sachen oder sehr häufigen Aufrufen.
Viele Grüße, William
-> http://william.thielicke.org/
Jo, das müßte sich schon bemerkbar machen.
Bin gespannt auf deine Ergebnisse!
Gruß MeckPommER
Mein Hexapod im Detail auf www.vreal.de
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/
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.)
@ 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
Lesezeichen