mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Inline ASM probleme


Autor: Thorsten Hut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe ein Array "volatile werte[100]" und will diese in inlineASM
füllen, vorerst nur einen Wert reinschreiben, leider funktioniert dies
nicht so wie ich es mir vorgestellt habe. Hat vileicht jemand einen
Tipp?


asm volatile(
"ldi XL, low(%0)"        "\n\t"
"ldi XH,high(%0)"        "\n\t"
"LDI  _tmp_reg_, 0x55"  "\n\t"
"ST X+, __tmp_reg__"      "\n\t"
:
:"x" (werte)
);

Autor: Isgul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat keiner nen tipp?

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf eine 16bit-Varibale greift man nicht mit low(%0) etc. zu, sondern
mit %A0 und %B0

Autor: Isgul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, funktioniert aber auch nicht

Autor: Isgul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
woran könnte es noch liegen?

Autor: Isgul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, mann kann doch nicht sein, daß mi niemand helfen will

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
unsigned char t;
    asm volatile(
  "ldi r26,lo8(%1)" "\n\t"
  "ldi r27,hi8(%1)" "\n\t"
  "LDI  %0, 0x55"    "\n\t"
  "ST X+, %0"        "\n\t"
  :
  :"r"(t), "m"(werte));

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Code ging nicht, weil
(a) das _temp_reg_ nicht mit LDI zusammenpasst,
(b) das constraint "x" ein Register beschreibt, nicht eine
Speicheradresse,

Was du evtl. gemeint hast:
    asm volatile(
  "LDI r24, 0x55"      "\n\t"
  "ST X+, r24"         "\n\t"
  :
  : "x"(werte)
  : "r24", "r28", "r29");

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, "r28", "r29" weglassen, falsches Reg.

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.