Habe ein Prog geschrieben, es ist allerdings noch nich fertig dennoch
habe ich schon die ersten Probleme.
Der Stack will nicht so wie ich will, nach aufrufen des Unterprogramms
soll er mit ret zurück hüpfen, tut er, aber nur insofern das er zum
Programm anfang und nicht zum Aufruf des Unterprogramms hüpft, hat wer
ne idee ?
Danke im vorraus
tja, was soll man dazu sagen?
push, push, push... und dann soll sich der kleine ret die richtige
Adresse selbst rausfischen? Oder wie denkst du dir das? Push/pop und
call/ret benutzen den gleichen stack und den gleichen SP.
bin mir net sicher, aber ich glaub du hast das problem, dass der
controller net mehr weiss wo er "hinhüpfen" soll, denn in der
Stack-schleife schiebst du den eintrag wo die rücksprungadresse steht
immer weiter zurück.
ich weiss net ob du mir folgen kannst, aber ich mein dass es so ist,
das im nach nem "rcall" die rücksprungadresse als oberstes in den
stack gespeichert wird. wenn du jetzt via "push" neue daten
drüberschreibst, verliert der controller die orientierung.
wieso speicherst du die daten überhaupt im stack, das ist doch
eigentlich gar net nötig, oder?
hoffe ich hab net für allzuviel verwirrung gesorgt.
gruß
martin
hm ok das Problem war mit einem einfachen rjmp gelöst ! Das ret scheint
tatsächlich meinen Stack zu mißbrauchen ;-) Zumindest wenn es etwas
anspruchsvoller wird.
Gibts denn ne möglichkeit dem die richtige stack adrese wieder
einzutrichtern ? ohne rjmp zu fuschen ?
du kannst die daten einfach in den flash schreiben, unn dann schön der
reihe nach einlesen, ich hab selbst so nen lauflicht geschrieben, ca.
100 Zustände im Flash, ist kein prob, aber auf dem stack wirds eng!
was sollte das mit cbi PORT,3 ?
Naja habe es jetzt so gemacht
sub1:
sbi PORTB, 0
sbi PORTB, 1
sbi PORTB, 2
sbi PORTB, 3
sbi PORTB, 4
sbi PORTB, 5
sbi PORTB, 6
sbi PORTB, 7
ret
da sdi eidnger anspringen.
Fange gerade erst mit avrs an , deshalb wunder dich nicht wenn meine
Lösungen nicht ganz so elitär sind ! :-) bin trotzdem glücklich wenns
klappt !