mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Relative Branch out of Reach


Autor: Thomas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe wie viele andere auch folgende Schleife programmiert. Beim 
Assemblieren meldet er aber den Fehler (AVR-Studio) "Relativa Branch out 
of Reach". Die dt. Uebersetzung ist kein Problem, aber welches Problem 
besteht. Die Schleife muesste doch einwandfrei sein - oder?

ldi  cou0, 0x06

loop_data_out:

     rcall  out_ready
     ld  all0, X+

     ..... etc.....

     dec  cou0
brne  loop_data_out

Tschues,

Thomas H.

Autor: A. Füßer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

Die ganzen Branch-Befehle können nur max. -64/+63 Byte im Programmcode 
springen. (Der Opcode ist für größere Sprünge zu klein/kurz und nicht 
dafür gemacht).
"Workaround": Springe zunächst mit brne eine nähere Speicherstelle an 
und von dort aus per rjmp (das kann bis zu +-2k springen) ans 
eigentliche Ziel.

Tschüß,
 André.

--
http://www.canathome.de - Hausautomation mit AVR + CAN

Autor: Thomas H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo André,

danke, ich werde es einmal anders versuchen.

Ade,

Thomas H.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

hatte das problem auch und hab es damit sofort gelöst. echt super. danke

mfg

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

A. Füßer schrieb:
> "Workaround": Springe zunächst mit brne eine nähere Speicherstelle an
> und von dort aus per rjmp (das kann bis zu +-2k springen) ans
> eigentliche Ziel.

oft hilft auch ein Umdrehen der Bedingung:


     dec  cou0
     breq  bin_fertig

     rjmp loop_data_out

bin_fertig:

Gruß aus Berlin
Michael

Autor: Walker M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

einfach genial hat sofort funktioniert! danke vielmals!

mfg

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.