Schau dir mal
$HWSTACK =
$SWSTACK =
$FRAMESIZE =
an. Die Defaultwerte sind etwas mickrig. (Help dazu lesen)
Hallo Leute,
Zur zeit benutze ich folgende Statements um eine Sub routine aufzurufen.
jetzt habe ich festgestellt, das im Simutator falsche Werte als "Local variable" angezeigt werden, wenn die Anzahl der byval's > 2 wird.Code:Declare Sub Spi_write(byval Spi_instr As Byte , Byval Spi_bytes As Byte, byval CS as byte, byval spi_echo as byte) Sub Spi_write(byval Spi_instr As Byte , Byval Spi_bytes As Byte, byval CS as byte, byval spi_echo as byte) ... end sub call Spi_write(&h40, 1,0,0) ...
Verwende ich nur 2 parameter, funzt alles ohne Probleme.
Ist das eine immer so und ich mache einen Fehler, oder ein Fehler in bascom? In der docu, ist nicht bezüglich Limitierung beschrieben.
Vielen Dank
mfg
Schau dir mal
$HWSTACK =
$SWSTACK =
$FRAMESIZE =
an. Die Defaultwerte sind etwas mickrig. (Help dazu lesen)
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
OK, diese stehen auf default.
$HWSTACK =32
$SWSTACK =8
$FRAMESIZE =24
benutze einen Mega8
leider steht in der Bascom docu nicht viel dazu. Stehen dei max werte in der atmel spec?
danke
Das ist weniger Atmel als Bascom.
However, probier einfach
$HWSTACK = 48
$SWSTACK = 64 ' besonders das ist wichtig
$FRAMESIZE =24
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
hallo Picknick,
danke für deine super schnelle Antwort.
Ich habe den SW stack von 8 auf 12 erhöht und es klappt nun so wie gewollt.
Aber.. was machtr der SW stack eigentlich genau?
vielen Dank
Guckst du da, hab ich ein paar Sachen zusammengeschrieben
https://www.roboternetz.de/wissen/in.../Bascom_Inside
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
perfekt,
das hilft mit beim lernen auf alle Fälle weiter.
toll, das du das alles zusammengetragen hast.
cu
Neben den bereits erwähnten Punkten wie FrameSize und Softstack-Größe gibt es noch das Limit, dass die Anzahl der LOCALen Variablen, Parameter und Rückgabewert in Summe maximal 32 sein darf.
Innerhalb einer SUB oder FUNCTION werden die oben erwähnten LOCAL, Parameter und Funktions-Rückgabe über den SoftStack (Y-Pointer) adressiert. Die Adressen werden über die ASM-Statements Y+0 ... Y+63 angesprochen. Für jede Adresse werden 2 Pointer (Y+0, Y+1) benötigt, daher 64/2 = 32 Adressen.
Viele Grüße
Josef
-------------------------------------------------------------------------------------
DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel
Lesezeichen