Hallo Zusammenn Ich programmieren einen ATMEGA8515 16PI Auf einmal bekomme ich die Fehlermeldung: "error: Relativ branch out of reach" Ich habe einen kleinen Ausschnitt aus dem Code. Fehler ist markiert "====Fehler == >>breq BfOKOK_RBS" Ich begreife die Meldung nicht. Was könnte dies sein? Gruss Weihnachtsmann
die relativen bedingten Sprünge arbeiten mit einem 6 Bit Offset. Das Sprungziel darf also maximal -64 +63 Worte entfernt sein. Hier ist die Distanz zu gross.
Hallo, ohne diesen Atmega genau zu kennen: Kann es sein, dass der relative sprünge einfach nur mit einer bestimmten maximalen Sprungweite machen kann? Beim 8052 ist das so. Der hat nicht so viele Bits im Befehlsformat für den relativen Sprung, und dann kann er nur +-2^n Bytes vor oder zurück. Gruss Alexander
Hallo mmerten Danke mal für die Antwort Also ich Prüfe ja mehrer Befehle auf richtigkeit. Wenn ich einen Befehl auskommentiere geht es wieder. Somit hast du recht. Nur wie soll ich dies nun machen? Wie würdest du das machen Gruss Weihnachtsmann
Hallo, die Meldung bedeutet, dass das Sprungziel zu weit entfernt im Code liegt (zu viele Bytes Programmcode zwischen Sprungbefehl und -ziel), um mit einem relativen Sprungbefehl erreichbar zu sein. Ich habe gerade die Spezifikation nicht zur Hand, aber würde sagen, dass es nicht mehr als 128 Byte oder 16 Word sein dürfen. Du kannst jetzt m.E. zwei Dinge tun: a) das Ziel näher heran holen b) einen absoluten Sprungbefehl (JMP, RJMP) verwenden. Gruß, Achim
Hallo Thorsten Den ganzen Cod möchte ich nicht posten. Was ist für dich Relevant? Eigentlich ist doch das der Relevante Code da der Fehler ihr drin ist. Gruss Weihnachtsmann
Danke ich glaub ich habe das problem gelöst Gruss Weihnachtsmann
breq nnn einfach durch die kombination brne PC + 2 rjmp nnn ersetzen, dann dürfen es +-2k Worte sein und damit ist beim das gesamte flash adressierbar.
Prüfe einfach auf das Gegenteil mit dem Du den RJMP dann überspringst: brne NoBfOKOK_RBS rjmp BfOKOK_RBS NoBfOKOK_RBS: inc BZA MfG Andi
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.