mikrocontroller.net

Forum: Compiler & IDEs AVR GCC und inline Assembler


Autor: klaus kloos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Ich beschäftige mich erst seit kurzem mit dem AVR /GCC und habe ein paar 
Fragen zum inline-Assembler.

Ich will mit einem Zeiger auf einen 16Bit Wert im PRGMEM zugreifen. Also 
so etwas wie PRG_RDB() aber für 16bit
Ich habe es auch fast geschafft, kann aber das zweite Register nicht 
ansprechen.

lengthMin ist die in einem Register liegende Zielvariable, aktRectP der 
Zeiger auf den Programmspeicher.

  _asm_ (        \
    "lpm %[reg0in],z+" "\n\t"      \
    "lpm %[reg1in],z+" "\n\t"      \
    : [reg0out] "=r" (lengthMin)    \
    : [inAdr] "z" (aktRectP), [reg0in] "r" (lengthMin), [reg1in] "r" 
(lengthMin)    \
  );

reg1in sollte das Register über reg0in sein. Wie bekomme Ich das hin?

Gibt eine Möglichkeit die Warnung  über das uninitialisierte lengthMin 
weg zu bekommen, ohne dieser Variablen vorher einen Wert zuweisen zu 
müssen?

Dann habe Ich noch ein Problem in prgmspace.h. Dort wird ein define 
'__AVR_ENHANCED__' angesprochen, das Ich nirgendwo finden kann, das aber 
wohl gesetzt ist. Ich arbeite auf einem Mega16.
Wo kann Ich diese Definition finden?

Vielen Dank schon mal fürs nachdenken.

gruß Klaus

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum inline-Assembler kann ich Dir nicht viel sagen außer daß
Du Dir vielleicht mal Eric Weddington's vorgeschlagenes neues
Interface für pgmspace.h ansehen kannst.  Hat er meines Wissens
an die avr-libc-dev Liste geschickt, und in deren Archiven kannst
Du über die Homepage des Projektes suchen.

_AVR_ENHANCED_ wird für den »enhanced core« IMHO durch den
Compiler selbst gesetzt.  Das sind alle ATmegas außer dem
ATmega103.

Autor: klaus kloos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank

Die Mailingliste habe ich gefunden. Ich werde es dort mal probieren.

Gruß Klaus

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.