-         

Ergebnis 1 bis 5 von 5

Thema: Wie "tief" geht GOSUB

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693

    Wie "tief" geht GOSUB

    Anzeige

    Ich habe ein Programm, das schon deutlich gewachsen ist.
    Aber ab und zu kommt es zu Abstürzen. Der M16 führt ein Reset aus (Watchdog habe ich nicht eingestellt, macht Bascom das evtl von sich aus?)

    So wie es aussieht stürzt das Programm ab, wenn ich aus einem Label mit Return zurück springen will.

    Ist GOSUB allgemein auf eine bestimmte "Tiefe" begrenzt?
    Wobei ich grade mal max. 5 GOSUB hinter mir habe an der Stelle. Der C16 kommte 8 glaube ich

    Eingestellt habe ich bis jetzt:
    Framesize: 48
    SWStack: 32
    HWStack: 64

    Und das sollte ja schon mehr als genug sein, oder?

    Gibt es irgendwie ein Anhalt für die Werte?

  2. #2
    Gast

    Gosub begrenzt ?

    Hakllo marco78,

    probiers doch einfach mal aus !

    Code:
    gosub one:
    gosub two:
    .
    .
    .
    .
    gosub ten:
    
    sub one :
    set Port
    waitms 500
    reset port
    waitms 500
    return sub
    So ist die Frage gleich geklärt. Sag mir was du rausgefunden hast !

    gruß Bernd (Gandalf)

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von engineer
    Registriert seit
    24.01.2005
    Ort
    Raum Frankfurt
    Beiträge
    268
    Die gosubs beanspruchen stack - liegt es gfs daran =

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Die Anzahl der GOSUB sind im Prizip nicht begrenzt, hängt aber vom verfügbaren HW-Stack Speicherplatz ab (pro GOSUB 2 Bytes).

    Schau mal in der Hilfe unter $DBG nach, dort sind die verschiedenen Stacks beschrieben, mit $DBG hast Du auch die Möglichkeit, den echten Bedarf ermitteln.
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Zitat Zitat von oe9vfj
    (pro GOSUB 2 Bytes)
    Danke, das war die Info, die ich brauchte.

    Zitat Zitat von oe9vf
    Schau mal in der Hilfe unter $DBG nach, dort sind die verschiedenen Stacks beschrieben, mit $DBG hast Du auch die Möglichkeit, den echten Bedarf ermitteln.
    Hab ich schon gescht. Aber ich habe diesen Stack Analyser nicht gefunden, der mir die Ergebnisse anzeigen würde.

    Da ich aber die Stacks schon deutlich höher gesetzt haben, wird es wohl ein anderes Problem sein. Schade das niemand weiss, wie der Real Hardware Simulator funktioniert

    Ich vermute mal ein gosub, was nicht mir return enden lösst den Fehler aus. Irgendwo könnte dann an Stelle von return goto stehen um zurück zu führen.
    Und beim nächsten Return weiss der Stack nicht so wirklich, welchen Wert er übernehmen muss und gibt auf

    Damit muss ich Gast auch nicht mehr erzählen, was das Ergebniss war

Berechtigungen

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