Forum: Mikrocontroller und Digitale Elektronik Was bedeutet diese Fehlermeldung


von Weihnachtsmann (Gast)


Angehängte Dateien:

Lesenswert?

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

von mmerten (Gast)


Lesenswert?

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.

von Alexander (Gast)


Lesenswert?

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

von Weihnachtsmann (Gast)


Lesenswert?

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

von Achim Walther (Gast)


Lesenswert?

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

von Thorsten (Gast)


Lesenswert?

Poste mal den relevanten Code.

von Weihnachtsmann (Gast)


Lesenswert?

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

von Weihnachtsmann (Gast)


Lesenswert?

Danke ich glaub ich habe das problem gelöst


Gruss

Weihnachtsmann

von mmerten (Gast)


Lesenswert?

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.

von Andi (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.