AVR - Assembler
-
Guten Morgen,
zur Zeit programmiere ich diverse Sachen für Mikroprozessoren, bzw. Mikrocontroller. Dabei muss man sehr auf seinen vorhandenen Speicher achten, dass weiß ich. Jedoch ist für mich folgendes etwas unklar:
.include "m8def.inc" start: call test1 test1: ret
Durch das call ist scheinbar der Speicher schon überlastet und ich bekomme folgende Meldung bei der Ausführung in meinem AVR-Simulator
Stack Pointer out of SRAM Space
Ich habe gelesen das der SRAM bei einem ATmega8 1kb zur Verfügung hat und bei einem call die Rücksprungsadresse in diesem SRAM abgespeichert wird. Kostet das call etwa soviel Speicher? Kann man das irgendwie elegant lösen oder muss ich auf call verzichten?
Mit freundlichen Grüßen,
Freaky
-
Bei einem Call wird ja die Rücksprungadresse auf den Satck gepusht und dann um ein erniedrigt.
Wenn du den AVR nur in Assembler programmierst, dann must du zuerst den Stackpointzer an eine passende Postition setzten. Ich bin mir nicht sicher, aber ich glaube der AVR Zählt den Stack runter. D.h. am besten stetzt du ihn ans Ende des Rams.
-
Habs gefunden... Im Datenblatt Seite 13.
http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf
-
Da ich erst seit gestern daim rumhantiere, kannst du, oder jemand anderes, mir zeigen wie genau das geht? Ich hab versucht den Text zu verstehen, aber das ist als Neuling noch etwas schwierig. Aufjedenfall muss ich scheinbar was mit push machen.
-
Hi!
Also es sollte ungefähr so aussehen.
SACKINIT: ldi r1,low(RAMEND) out spl,r1 ldi r1,high(RAMEND) out sph,r1
Ich weiß jetzt nicht, ob RAMEND schon definiert ist, da ich nicht weiß, welchen Assembler du verwendest.
Wieso programmierst du das eigentlich in Assembler? Es Gibt für die AVRs einen echt guten C-Compiler, auch für Windows(http://winavr.sourceforge.net/).
MfG
-
Danke für deine Hilfe :). Ja ich weiß, ich benutze Code::Blocks um in C für AVR zu programmieren. Aber wenn ich schon für sowas programmiere, habe ich mir gedacht, dass ich mir das ganze mal ein bisschen tiefer anschaue und gucke wie das direkt aussieht.
-
FreakY<3Cpp schrieb:
Danke für deine Hilfe
Jederzeit...
-
hab da mal was geschrieben:
http://www.henkessoft.de/Roboter/stk500.htm