PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Byte Variable - out of SRAM space



Barthimaeus
18.11.2007, 16:51
Ich programmiere mienen attiny13 zZ. mit Bascom und da klappt auch ganz gut. Nur wenn ich versuche eine Variable vom Typ Byte zu deklarieren


dim n as byte

bekomme ich sofort den Fehler: "Out of SRAM Space", obwohl doch selbst ein attiny 13 Problemlos einen einziges Byte Speicher aufbringen können sollte. Im Beispielprogramm vom Lernpaket funktioniert das auch. Nur wenn ich den Code von da 1:1 kopiere klappts trotzdem nicht. Muss man da noch irgendwelche konfigurationen treffen, die nicht im Code selbst liegen?

stefan_Z
18.11.2007, 18:04
Der tiny13 hat keinen RAM, daher kannst du auch keine Variablen darin ablegen. Schau mal hier: https://www.roboternetz.de/phpBB2/viewtopic.php?t=35619&sid=88601595dc79c4dcb42ffcde1d373e06

Barthimaeus
18.11.2007, 18:28
aber das Beispielprogramm aus dem Lernpaket Mikrocontroller funktioniert doch auch :( Irgendwie muss es dann doch gehen. Wenn ich nicht nur die .bas Datei des Beispielordners kopiere kann ich es auch kompilieren

=> Irgendwo in den anderen Projektdateien muss besagtes Problem geregelt werden - es gibt:

.bas
.bin
.bm
.cfg
.dbg
.obj
.hex
.rpt

Dateien - Weis jmd welche es ist, die mein Problem behebt?

Windi
18.11.2007, 23:25
Der tiny13 hat keinen RAM, daher kannst du auch keine Variablen darin ablegen. Schau mal hier: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=35619&sid=88601595dc79c4dcb42ffcde1d373e06

Im Gegensatz zu dem von Dir erwähnten Fred (mit dem Tiny12) verfügt der Tiny13 über 64 Byte Ram in dem man sehr wohl Variablen ablegen kann.

Vielleicht ist Dein Hardwarestack so hoch eingestellt dass kein Platz mehr für Variablen übrig ist.

Füg mal folgende Zeile oben in Deinem Programm ein:
$hwstack = 22

Barthimaeus
19.11.2007, 14:11
Ok, jetzt klapts - kannst du mir villeicht noch erklären, was der Hardwarestack ist?

Windi
19.11.2007, 14:17
Ok, jetzt klapts - kannst du mir villeicht noch erklären, was der Hardwarestack ist?
Der Hardwarestack ist ein reservierter Speicherbereich.
Dort werden z.B. die Rücksprungadressen für Gosub-Befehle zwischengespeichert. Je mehr verschaltelte Gosub-Sprünge man im Programm hat umso mehr Stack muss man hierfür reservieren.
Dieser Speicher steht dann für Variablen nicht mehr zur Verfügung.
Standardmäßig ist dieser bereits voreingestellt. Je nachdem wieviel Variablen man im Programm hat kann es dann (wie in deinem Fall) nicht mehr reichen und man muss ihn händisch anpassen.