Hallöle Mein Problem ist,das bei (bis jetzt) zwei includierten Unterprogrammen das ret nicht an die richtige Stelle springt. Bis jetzt habe ich nur wait.asm, reedelundhibyte.asm und writeelundhibyte.asm sinnvoll verwendet. Beim wait springt er zurück, wie es sich gehört. Bei reedelundhibyte springt er ins writeelundhibyte und sofort wieder raus, an die richtige Stelle und bei writeelundhibyte springt er in die Kommentarzeile EEPROM und dann sofort an die richtige Stelle. Also immer eine Zeile hinter sein .include. Das Prg ist nicht gekürzt. Die HW steht oben drin. Geschrieben und getestet ist es im AVRStudio6 mit dem Simulator. Ich suche schon ewig rum, warum er das tut. Im Forum waren für so Sachen immer nicht gesetzte Stapel verantwortlich. Aber der Stapel ist da und funzt bei wait ja auch. Vielleicht kann mir ja einer einen Tip geben, welchen Wald ich vor lauter Bäumen nicht sehe. Danke und Gruß Bernd
:
Bearbeitet durch User
Hi >ldi tmp,low(eeelwl) >out eearl,tmp ;Adresse lowbyte >ldi tmp,high(eeelwl) >out eearh,tmp ;Adresse highbyte Datenblatt: To do a 16-bit write, the High byte must be written before the Low byte. For a 16-bit read, the Low byte must be read before the High byte. >!!!!!!!!!!!!ab hier dürfen keine IR kommen!!!!!!!!!!!!!!!!!! >;!!!!!!!!!!!!ab hier dürfen wieder IR kommen!!!!!!!!!!!!!!!!! Und du meinst die Interrupts lassen sich von den Kommentaren beeindrucken? Da must du schon selbst Hand anlegen. Mit etwas geplanteren Programmierung würde das gleiche Ziel mit max. 10% des Programmcodes auskommen. MfG Spess
Das scheint eher ein Problem des Debuggers zu sein, allerdings kein schlimmes: Offesichtlich springt der Cursor bei Ausführen von RET erst einmal in die darauffolgende Quellcodezeile. Das ist in wait.asm eine Leerzeile, wo dies nicht weiter auffällt. Da in reedelundhibyte.asm und writeelundhibyte.asm der RET-Befehl in der allerletzten Zeile steht, ist die nächste Zeile die erste Zeile von writeelundhibyte.asm bzw. die nächste Zeile in Orlyjonok.asm (das ist der Kommentar mit dem EEPROM). Das scheint aber nur eine Eigenart des Debuggers zu sein, der Programmlauf an sich war wohl korrekt, da deiner Aussage nach das Debugging im nächsten Schritt an der richtigen Stelle fortgesetzt wurde. Wenn dich dieses Verhalten des debuggers stört, kannst du ja am Ende jeder Quellcodedatei eine Leerzeile einfügen, wo der Cursor hinspringt, bevor RET in den aufrufenden Programmteil zurückkehrt. Vielleicht kann jemand, der Gegensatz zu mir das AVR-Studio benutzt, mehr dazu sagen.
Oh! Danke! Ich erröte grade. Wegen der 10%. Ich bin noch am lernen. Deswegen gehe ich noch die tippel tappel Tour um es zu verstehen. Jetzt z.B. interessiert mich brennend, was ein falsch rum geschriebenes Wort für einen Einfluss auf den Stapel hat. Was zum denken/lesen für heute abend. Also nochmal vielen Dank
Nochmal Danke Grade habe ich nochmal geguggt, habs aber in der Eile nicht gefunden. Denn Wort-Dreher habe ich irgendwo rauskopiert.(Ich will mich nicht rausreden, nur den Fehler melden.) Das mit den Leerzeilen probiere ich heute abend gleich mal aus. Gruß Bernd
Der Stapel ist ein Stückchen Speicher, sonst nix. Was Du da drauf legst ist völlig egal. Legst Du von einem Wort erst den High-Teil und dann der Low-Teil ab - wen interessiert's? Wichtig ist nur, dass Du anschließend erst den Low-Teil abholst und dann den High-Teil. Und natürlich wo und wie Du diese zusammenfügst. Zusammengefasst: Es sollte alles im Rahmen (Platz) bleiben. Jedes Byte, das abgelegt wird sollte, wenn irgend möglich, in der gleichen Funktion auch wieder abgeholt werden. Fehler in diesem Bereich sind nicht ganz einfach zu finden.
Ich nochmal Die Kommentarzeilen wegen der IR sind nur Gedankenstützen. Irgendwann, später benutze ich noch die externen, spätestens dann muß ich sie dort ab- und wieder anschalten. Gruss Bernd
Bernd S. schrieb: > Grade habe ich nochmal geguggt, habs aber in der Eile nicht gefunden. > Denn Wort-Dreher habe ich irgendwo rauskopiert.(Ich will mich nicht > rausreden, nur den Fehler melden.) Ist kein Fehler. Was Spess da zitiert hat, ist für EEAR irrelevant.
Hallo Mädels Eben habe ich das mit der Leerzeile nach dem ret ausprobiert. Es funzt. Auch ist mir aufgefallen, dass ich bei " sbi EECR,EEWE " und gleich danach bei " rjmp writeend " je zwei mal 'Step Into' drücken muß. Schade, ich habe die HW noch nicht fertig. Sonst könnte ich es da mal testen. Vielleicht liegts ja doch am Studio 6. Im Studio4 habe ich mal was ähnliches gebastelt, da ist sowas nicht passiert. Naja, jedenfalls nochmal vielen Dank an Euch alle. Gruß Bernd
Hi >Vielleicht liegts ja doch am Studio 6. Im Studio4 habe ich mal was >ähnliches gebastelt, da ist sowas nicht passiert. Warum bist du nicht beim 4er Studio geblieben? Für Assembler bringt das 6er Studio gar nichts. MfG Spess
spess53 schrieb: > Warum bist du nicht beim 4er Studio geblieben? Für Assembler bringt das > 6er Studio gar nichts. Sogar noch viel schlimmer: Vieles geht einfach nicht mehr, was im 4er noch korrekt funktionierte.
moin moin Ja, gute Frage. Ich wollte es einfach mal ausprobieren. Tüchtig aufgeblasen isses ja. Es gibt da schon ein paar Sachen, die schöner sind. Wenn man sie gefunden hat. Blöd ist,zB,dass man das erstellen der .eep Datei erst anschalten muss. Ich wollte schon mal zurück aber rückwärts konvertieren ist ja nicht, oder ich habs nicht gefunden. Und jetzt isses mir einfach zu umständlich die Projekte im Studio4 neu anzulegen. Irgendwie erinnert es mich immer dran, was passiert, wenn man mit GIMP versucht auf einem Foto einfach rote Augen wegzumachen. Euch allen einen schönen Tag. Gruß Bernd
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.