Hallo, Ich habe folgenden Code bisher nur im Simulator vom AVR Studio getestet ( für den AT90S4433 ). Meine Frage ist, warum springt der Simulator nicht an die im Stack abgelegte Sprungadresse (loop) , sondern an den Reset Vektor? .include "4433def.inc" .def temp = r16 main: ldi temp, RAMEND out SPL, temp rjmp test loop: rjmp loop test: ldi temp,LOW(loop) push temp ldi temp,HIGH(loop) push temp ret Denkfehler? Tippfehler, Fehler im Simulator oder kann der AT90S4433 das nich? (Wenn ich nen Mega8 auswähle gehts) mfg Markus
Hi, schreib mal folgendes zwischen .def... und main: .cseg rjmp reset ; Reset Handler reti ; IRQ0 Handler reti ; IRQ1 Handler reti ; Timer1 Capture Handler reti ; Timer1 compare Handler reti ; Timer1 Overflow Handler reti ; Timer0 Overflow Handler reti ; SPI Transfer Complete Handler reti ; UART RX Complete Handler reti ; UDR Empty Handler reti ; UART TX Complete Handler reti ; ADC Conversion Complete Interrupt Handler reti ; EEPROM Ready Handler reti ; Analog Comparator Handler Sebastian
Seltsam, hier im AVR-Studio 4 Simulator springt er zu loop, genau wie Du's dir vorgestellt hast. Da stimmt irgendwas mit Deinem Simulator nicht.
Hmmm geht jetzt.... aber warum? Ich hatte vorhin schon am Anfang: .org 0x00 rcall main .org 0x06 rcall TimerOverflow
also das ist Blödsinn und kann nicht funktionieren: .org 0x00 rcall main .org 0x06 rcall TimerOverflow richtig: .org 0x00 rjmp main .org 0x06 rjmp TimerOverflow
Sorry .. warn Tippfehler ;) Hatte ich auch garnich dastehen. Aber selbst wenn, sollte doch eigentlich keinen Einfluss auf das Problem haben, oder?
>Denkfehler? Tippfehler, Fehler im Simulator oder kann der AT90S4433
das
Denkfehler. RCALL statt RJMP!
hans.
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.