mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit Stack


Autor: Oktupus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Oktupus (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hup sorry kurz ne korrektur bzw. ab rcall ausgang braucht eigentlich nix
mehr zu interessieren da, das problemm ja nur mit ret zusammenhängt !

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Martin Jansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Martin Jansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tja, ich glaub da war ich ein bissl zu spät...
immerhin, ganze 4! minuten (die ich zum tippen brauchte g)

Autor: Oktupus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: Oktupus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Martin

naja der stack bietet sich für ein lauflicht halt an wenn ich registe
nehme, baller ich mir ja die register weg !

Autor: Oktupus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Martin

hups ich hätte es mit cbi PORTB, 3   lösen sollen ?

hmm <ggg> man staune man staune

Autor: Martin Jansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: Oktupus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Martin

hmm stellste dein lauflicht mal rein ?
cpi ? Port aktivieren oder halt nicht !

Autor: Martin Jansen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Martin Jansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, hab mich vertan, sind sogar mehr als 200!

Autor: Oktupus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 !

Autor: Martin Jansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kleiner tipp, was du da gemacht hast, geht auch viel einfacher!

sub1:
ldi r16, 0xff
out portb, r16
ret

gruß
martin

Autor: Oktupus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja ! aber doch alle aufeinmal ich will die langsam hinterienander
anmachen, natürlich muß noch ein delay da rein aber kommt ja noch !

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.