- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Mittels goto an Programmanfang springen

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Anzeige

    Praxistest und DIY Projekte
    Also ich hätte nichts dagegen obwohl ich versuchen würde es anders zu lösen Der Sprung mit GOTO sollte nur nicht aus einem Unterprogramm oder gar einer Interruptroutine heraus erfolgen, da sonst der Stack durcheinanderkommt.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #12
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694
    ... nichts dagegen obwohl ich versuchen würde es anders zu lösen . Der Sprung mit GOTO ...
    Sowohl in meinem recht komplexen Transistortester - ähnlich hier, aber mit I 2 C und weiteren, eigenen Funktionen - als auch in meinem Pacer (hier) habe ich GOTO´s. Der Pacer läuft mit sleep - und ich habe eigentlich noch nie nen Absturz erlebt. Der Transitortester wird zwar immer neu gestartet, aber auch hier ist bei längerem, durchgehenden Gebrauch kein Nachteil zu erkennen - und keine Fehlfunktion.
    Ciao sagt der JoeamBerg

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    @oberallgeier: Ich habe ja auch gar nichts gegen die Nutzung von Goto. Mir ging es darum, daß man auf den Stackpointer achten sollte und bei Sprung aus einer ISR heraus auch noch auf das Global Interrupt Enable Bit. Das könnte kompliziert werden und kann man vermeiden, wenn man Goto vermeidet oder es nur innerhalb des Hauptprogramms verwendet bzw. nur innerhalb von Subroutinen springt.

    zB bei sowas wird der Stackpointer immer weiter nach unten gesetzt und es muß irgendwann zum crash kommen.
    Code:
    dim x as byte
    dim y as byte
    
    init:
    x = 1
    y = 2
    
    gosub check
    
    do
    loop
    
    check:
      if x = 1 goto init
    return
    
    end
    Steht anstelle von "goto init" ein "goto 0" wird auch der Stackpointer neu initialisiert.
    Ist halt eine Frage der Konstellation und wie Demmy es einsetzt.

    Gruß
    Searcher
    Geändert von Searcher (30.11.2012 um 11:35 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    348
    Also ich habe es in etwa so gelöst:

    Code:
    'Hardwarekonfiguration
    ....
    
    'Variablendeklaration
    ....
    
    'Anlaufbedingungen / Startberechnungen
    ....
    
    Resetpunkt:
    
    ' Variablen richten
    ....
    
    ' Notwendige Berechnungen
    ...
    
    ' Hauptschleife
    Do
    
    if .... then
     goto Resetpunkt
    end if
    
    Loop
    Also bis jetzt funktioniert es einwandfrei.

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Zitat Zitat von demmy
    Also ich habe es in etwa so gelöst:
    Da finde ich jetzt kein Haar in der Suppe ; ist in Ordnung!

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Ja, geht auch.

    Ist in etwa das gleiche wie meine Vorgehensweise.

    Code:
    'Hardwarekonfiguration 
    ....  
    'Variablendeklaration 
    ....  
    'Anlaufbedingungen / Startberechnungen 
    ....
    gosub Resetpunkt  
    ' Hauptschleife 
    Do  
       if .... then  
          gosub Resetpunkt 
       end if  
    Loop
    end
    
    Resetpunkt:
        ' Variablen richten 
       ....  
       ' Notwendige Berechnungen 
       ...
    return
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. An bestimmte Programmstelle springen
    Von petzi-- im Forum Robby RP6
    Antworten: 12
    Letzter Beitrag: 17.10.2012, 19:56
  2. if then else Schleife möglich mit goto zu verlassen?
    Von mat-sche im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 27
    Letzter Beitrag: 14.04.2009, 09:17
  3. Bootloader goto addresse bei Mega644 ?
    Von Keksdose im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 01.04.2007, 19:09
  4. goto ist böse
    Von _maddin im Forum C - Programmierung (GCC u.a.)
    Antworten: 15
    Letzter Beitrag: 11.02.2007, 16:58
  5. Frage zu Goto und Return
    Von Murus im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 20.04.2006, 11:28

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress