In meinem Programm werden sämtliche rcall-Anweisungen ignoriert. Sowohl der Simulator als auch der Controller verhalten sich so als würden die rcall-Anweisungen garnicht dastehen. Auch die normale call Anweisung wird ignoriert. Ersetzt man rcall durch jjmp so erfolgt der Sprung. Stackpointer ist aber korrekt gesetzt. Habe dann das Beispiel von dieser Seite ins AVR Studio für den Atmega 8 gebraxht. Ergebnis: selbst bei diesem Beispielprogramm springt er nicht! Was ist da los? .include "m8def.inc" .def temp = r16 ldi temp, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse out SPL, temp ldi temp, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse out SPH, temp rcall sub1 ; sub1 aufrufen loop: rjmp loop sub1: ; hier könnten ein paar Befehle stehen rcall sub2 ; sub2 aufrufen ; hier könnten auch Befehle stehen ret ; wieder zurück sub2: ; hier stehen normalerweise die Befehle, ; die in sub2 ausgeführt werden sollen ret ; wieder zurück
Wie lässt Du den durchlaufen? Wenn Du F10 im Debugger drückst dann geht er nicht in die Routinen rein (bzw. arbeitet die zwar ab aber du siehst das nicht). Mit F11 kannst Du dein komplettes Programm verfolgen. Ich denke auch hier liegt der Fehler. Und wie sieht der Stackpointer aus, wenn Du über "rcall loop 1" gegangen bist?
DANKE! Alles funktioniert jetzt Der Tip mit F11 brachte den Simulator zum Laufen. Dann habe ich wegen mangelnder Konzentration auch noch das falsche HEXFile geflasht.
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.