mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Was bedeutet diese Fehlermeldung


Autor: Weihnachtsmann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Alexander (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Achim Walther (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste mal den relevanten Code.

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Weihnachtsmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke ich glaub ich habe das problem gelöst


Gruss

Weihnachtsmann

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.