mikrocontroller.net

Forum: Compiler & IDEs Z Pointer unter AVR GCC setzen


Autor: Jörn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich habe eine fertige Assemblerdatei und bin dabei sie in AVR GCC
einzubinden um die funktionen nutzen zu können. Doch beim setzen des
Z-Pointers auf meine "ASCIITABELLE" erhalte ich folgende fehler:

Zeile 131:  ldi  ZL,ASCIITAB<<1    ;set pointer to Ascii table
Zeile 132:  ldi  ZH,ASCIITAB>>7

LCD.S:131: Warning: expression possibly out of 8-bit range
LCD.S:132: Warning: expression possibly out of 8-bit range
LCD.S:131: Error: invalid section for operation
LCD.S:132: Error: invalid section for operation

Hat jemand eine idee wo hier der fehler liegt?

Danke schonmal im vorraus!

MFG Jörn

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du willst wahrscheinlich die Operatoren pm_lo8() und pm_hi8()
benutzen.

Wofür soll die Bitschieberei um 7 bzw. 1 Bit gut sein?  Die wird
höchstwahrscheinlich flasch sein, sowohl das Z-Register als auch
der Assembler zählen beide in Bytes (auch für den ROM -- daß Du
Dich auf ROM beziehst, hättest Du übrigens ruhig dazuschreiben
können).

Autor: Jörn (Gast)
Datum:
Angehängte Dateien:
  • LCD.S (13,3 KB, 275 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
Hm ich glaub das hat keiner so richtig verstanden deshalb hänge ich
jetzt mal den kompletten Quelltext an, vielleicht weis ja dann jemand
einen rat?!!

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ziemlich genau das, was Du da hast, habe ich mir drunter vorgestellt.
Nix mit nicht verstanden, außer daß Du vermutlich nicht verstanden
hast. ;-)  Also lies Dir nochmal durch, was ich geschrieben habe und
versuche es mal zu verstehen.

Btw., ich würde es in C schreiben, da nimmt einem der Compiler
bestimmte Dinge (wie eben z. B. die Initialisierung von Z beim
Lesen des ROMs) ab.  Zumindest kannst Du dann nachgucken, wie er
die pm_lo8() und pm_hi8() Operatoren benutzt.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was machen diese Operatoren (?) denn anders als hi8() und lo8()?

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, sie beheben das urpsrüngliche Problem von Jörn, bei dem sich
der Assembler beklagt, daß der Zugriff auf den falschen
Speicherbereich versucht wird.

Dokumentiert sind all die AVR-spezifischen gas pseudo-ops leider
nur in Dateien, die auf ».c« (oder ».h«) enden. :-/

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.