was ist mit stackpointer ?
Werbung
Hallo,
eine kleine Routine, macht nichts anderes als über einen Adressbus 8 Pins abfragen ("Eingabeport") und dann an einem Ausgabebus ausgeben. Funktioniert einwandfrei - nur nicht, wenn das Anwählen des Eingabeports als Subroutine programmiert ist.
a) So läufts auf Atiny 2313 und Atmega8:
ldi Adresse, 1
out Adressbus,Adresse
START:
in Temp, Datenbus_in
out Magnetbus,Temp
rjmp START
b) So läufts auf Atiny 2313, aber nicht auf Atmega8:
rcall Tastatur
START:
in Temp, Datenbus_in
out Magnetbus,Temp
rjmp START
Tastatur:
ldi Adresse, 1
out Adressbus,Adresse
ret
Ich habe keine Ahnung, wo ich ansetzen muß. Bitte Hilfe!
was ist mit stackpointer ?
Linus TorvaldSoftware is like s e x: its better when its free.
danke für schnelle Antwort!
Ich habe eine ungefähre Ahnung, was ein Stackpointer macht, aber nicht mehr. Hatte bisher nur Atiny2313 programmiert, da funktionierten die rcalls ohne weiteren Aufwand. Was muß ich tun?
http://www.izaseba.roboterbastler.de...Lektion8#Stack
Vielleicht hilft das ?
Linus TorvaldSoftware is like s e x: its better when its free.
super erklärt, verstanden.
Aber auch das Beispielprogramm läuft auf dem Atmega8 nicht (Atiny2312 schon). Im Datenblatt und Instruction Manual habe ich nichts gefunden. Verstehe nicht wo das Problem ist, siehe "Unterprogramme aufrufen" => "Das schöne daran ist, ablegen der Adresse usw. macht der assembler für uns automatisch, wir brauchen uns nicht darum zu kümmern."
Vor allem den Unterschied zw. Atiny2313 und Atmega8 nicht. Die Befehle sind doch identisch!
Sebastian, das mit dem Initialisieren war es! Tausend Dank für Deine Anleitung!!! Warum die Programme auf dem Atiny2313 trotzdem immer liefen, ich weiß es nicht. Aber das Problem ist nachhaltig gelöst.
Nochmals vielen, vielen Dank! \/ (Hoffe, das ist das richtige Smeili)
Evtl. kann ich mich mal mit etwas Relais- oder Hubmagnete-Wissen revanchieren.
Lesezeichen