www.mikrocontroller.net

Forum: Compiler & IDEs Variable aus struct in AVR-GCC assembler


Autor: Fabian Braun (fabbraun)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits!

Ich habe folgende Zeile in meinem avr-gcc Assembler file (*.S) meines
C-gemixt-mit-Assembler-Projekts geschrieben:

LDI  r30, hi8(RDSEnc_Biphase.cCurrentGroup)

Das hat jedoch nicht funktioniert, und so ist mir aufgefallen, dass ich
zwischen den Klammern von hi8() oder lo8() keine Variable aus einem
struct nehmen kann, da ich ansonsten einen Fehler kriege. Ist das ein
bekanntes Problem? Habe ich irgend etwas übersehen? Oder gibt's da
eine andere Lösung?

Merci für deine Hilfe

Fab

Autor: Irgwer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Fab,

hi8() und lo8() sind avrggc spezifische assembler-operatoren. Diese
liefern die oberen bzw. unteren 8 Bit eines 16Bit-Wertes. Nachdem du
deiner Variable 'cCurrentGroup' das Prefix 'c' verpasst hasst, geh
ich mal davon aus das sie vom Datentyp char sind. Dann ist die
Fehlermeldung berechtigt.

Du solltest halt mal ein wenig mehr von deinem Code zeigen. Hilft so
manchmal beim Helfen.

Autor: Fabian Braun (fabbraun)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ja das leuchtet mir eigentlich soweit ein.
Richtig bei "cCurrentGroup" handelt es sich um einen char, jedoch
habe ich diesen Namen nur als Platzhalter genommen. Bei dem
eigentlichen Situation war die Variable ein Pointer "unsigned char
*pcBlaBlaBla" (die ja 16bit hat!). Was noch dazu kam, im struct hat es
nicht funktioniert und als ich der gleiche Typ von Variable dann separat
(nicht in einem struct) deklariert und verwendet hatte, hat's
funktioniert!

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.