Forum: Mikrocontroller und Digitale Elektronik Unterprogramm Bascom


von Thomas (Gast)


Lesenswert?

Hallo,

ich habe wieder mal ein kleines Problem!

weis zufällig wer,ob verschachtelte Unterprogramm Routinen in Bascom
generell möglich sind??

Denn ich hab von meinen Hauptprogramm eien Gosub Sprung in ein
Unterprogramm von dem ich nochmal in ein Unterprogramm springe.

Seit dieser Zeit habe ich hin und wieder Probleme mit den
Programmablauf und bin mir nocht ganz sicher ob das das Problem ist
oder ob das ein anderes Problem sein muß.

Gruß Thomas

von Rufus T. Firefly (Gast)


Lesenswert?

Es geht, hängt aber von der Größe des Stacks ab. Die kannst Du selber
einstellen, musst dabei aber auch an den restlichen Speicherbedarf
Deines Programmes und natürlich an das verfügbare RAM Deines
Controllers denken.

von Thomas (Gast)


Lesenswert?

Hi,

wie kann ich das verstehen?

Ich benutze den ATmega161 und
der Soft-Stack steht auf 8 und HW-Stack auf 32.

und welchen Ram meinst du? den S-Ram oder X-Ram der letztere steht
nähmlich auf None.

Entschuldige die dummen Fragen, ich habe leider keine Erfahrung mit
diesen einstellungen!

Gruß Thomas

von Rufus T. Firefly (Gast)


Lesenswert?

Na, sofern Du kein externes RAM an Deinen Mega161 angeschlossen hast,
ist es auch gut, daß der X-RAM-Wert auf 0 steht.
Das SRAM ist das im Controller eingebaute RAM.
Stackgrößen von 8 bzw. 32 erscheinen mir ein wenig klein. Vergrößere
diese Werte doch einmal auf -beispielsweise- das doppelte und lies'
Dir durch, was das BASCOM-Handbuch zum Thema zu sagen hat.

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

mich mach eigentlich nur die Report-Datei etwas tutzig und zwar ganz
unten bei

Warnings:
------------------------------------------------------------------------ 
--------
HWSTACK                          not used
SWSTACK                          not used
FRAME                            not used
COMPARE0                         not used
COUNTER2                         not used
PWM2                             not used
BTSOLL3                          not used
BFSOLL3                          not used
STSOLL3                          not used
SFSOLL3                          not used

Ich habe schon verschiedene Einstellungen versucht, aber da ändert sich
nicht viel.
Ich verstehe nicht was das "not used" zu bedeuten hat?

Ich habe mal die ganze Datei angehängt.

Gruß Thomas

von Rufus T. Firefly (Gast)


Lesenswert?

Das "not used" bedeutet wohl nur, daß niemand auf die Variablen dieses
Namens zugreift.

Etwas deutlich weiter oben in Deinem Report heisst es:

  Stack start  : 45F hex
  Stack size   : 60 hex
  S-Stacksize  : 20 hex
  S-Stackstart : 400 hex


Hast Du die Stackgrößen von 0x60 (96) und 0x20 (32) eingestellt?

Wenn nein - das könnten die erforderlichen Stackgrößen sein.

von Peter (Gast)


Lesenswert?

Mein Tipp: stell erstmal alle die beiden Stacks auf 256 und den
Framesize auf 16 oder 32.
Wenn es dann läuft, entwickelst du zuende und setzt den Stack dann
später auf Werte, bei denen das Progr. noch läuft.
Je mehr Gosubs, Calls etc. desto mehr Stacks werden gebraucht.

zur Ausgangsfrage: ja, mehrere Gosubs ineinanderschachteln klappt
problemlos.

Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.