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
hup sorry kurz ne korrektur bzw. ab rcall ausgang braucht eigentlich nix mehr zu interessieren da, das problemm ja nur mit ret zusammenhängt !
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
tja, ich glaub da war ich ein bissl zu spät... immerhin, ganze 4! minuten (die ich zum tippen brauchte g)
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 ?
@Martin naja der stack bietet sich für ein lauflicht halt an wenn ich registe nehme, baller ich mir ja die register weg !
@Martin hups ich hätte es mit cbi PORTB, 3 lösen sollen ? hmm <ggg> man staune man staune
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 ?
@Martin hmm stellste dein lauflicht mal rein ? cpi ? Port aktivieren oder halt nicht !
sicher kann ich das, siehe anhang, von wegen cpi, den befehl kenn ich auch, danke! jetzt weiss ich aber immer noch net was der bezwecken sollte.
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 !
kleiner tipp, was du da gemacht hast, geht auch viel einfacher! sub1: ldi r16, 0xff out portb, r16 ret gruß martin
ja ! aber doch alle aufeinmal ich will die langsam hinterienander anmachen, natürlich muß noch ein delay da rein aber kommt ja noch !
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.