Hallo,
zum testen kannst Du die Localen Variablen weglassen, die werden ja noch nicht gebraucht,
ansonsten mit Hilfe dieser Seite die Stack und Framegrössen ändern:
https://www.roboternetz.de/wissen/in.../Bascom_Inside
Hallo ich habe ein Problem mit der sub funktion
ich übergebe eine 19 und bekomme eine 62 der code ist grad mal 10 Zeilen
und ich kapiers nicht.
ist der Speicher in einer sub begrenzt ? wenn ja auf wieviel und
wie kann ich das problem lösen
Danke für Antwort
Gruß Daniel
Code:$regfile = "m16def.dat" Declare Sub Menueupdate(byval Menpunkt As Byte ) Call Menueupdate(19) End Sub Menueupdate(byval Menpunkt As Byte ) Local Adresse As Byte Local Neuadresse As String * 3 Local Langstring As String * 20 Print "menuepunkt sub " ; Menpunkt End Sub
Hallo,
zum testen kannst Du die Localen Variablen weglassen, die werden ja noch nicht gebraucht,
ansonsten mit Hilfe dieser Seite die Stack und Framegrössen ändern:
https://www.roboternetz.de/wissen/in.../Bascom_Inside
die sind ja extra drinn weil sie den fehler verursachen
hab den urcode solange eingekürzt bis das übrig blieb
es liegt ja wahrscheinlich am sw stack leider verstehe ich nicht viel davon
wie groß kann man die stacks dimensionieren
wo kommt der platz her wenn ich diese vergrößere?
brauch ne antwort in dummy deutsch
Gruß Daniel
Hast Du die Seite gelesen, da würde es drinstehen wann wieviel Speicher in etwa verbraten wird.
Alles zusammen darf dann aber nicht grösser werden wie der SRAM des AVR.
wenn man ne seite liest heiß das noch nicht das man das auch versteht
also was mach ich wie wie damit ich 40 byte locale variablen im sub verbraten kann
Hallo,
wenn man sich diesen Abstz durchliest:
https://www.roboternetz.de/wissen/in...e#Lokale_Daten
würde ich darauf schliessen erstmal den Wert bei $frame zu erhöhen, standarmässig ist er auf 32, was nicht reicht, also mal mind. 50 probieren.Lokale Daten
Für lokale Daten muß natürlich erstmal ein Platz geschaffen werden. Bascom verwendet dazu das Frame, ...
Den Wert für $swstack auch sicherheitshalber mal auf 50, wenns noch nicht geht nochmal alles etwas grösser machen bis es geht, dann nochmal für etwas reserve.
Der M16 hat 1024 Byte SRAM, wenn das nicht reicht, anders Programmieren, oder einen grösseren AVR.
alles klar ..werd die mal bissl aufstocken und dann solang drosseln bis ich wieder probs bekomm
dann hab ich in etwa die grenze
danke für den tip
Hallo
Ein kurze Bemerkung vielleicht zu den Sub's und Function's
Die Brauchen leider ein wennig mehr Speicher
Für mich stelle ich mir die Frage, ob man nicht doch gleich bei Gosub und Goto bleiben soll. (leider)
Blöd wäre es , wenn man sich auf die Sub und Function einschiesst und dann, wen der Speicher nicht reicht, erst wieder alles umschreiben muss
Mir geht es derzeit so mit einem Mega16
Derzeit bin ich bei 13946 Byte (von 16000 Byte) und das Programm ist noch nicht ganz fertig. (Alle noch mit Gosub)
Habe mal ein paar von den Gosub's in Sub geändert (ich glaub so ca. 17Stück)
und ich komme von 13946 auf 14326Byte
Um den Daumen so ca. 30 Byte mehr für einen Sub-Aufruf
Nur mal so zum Nachdenken
(und ich wollte keinen Extra Thread dafür aufmachen
Lesezeichen