in Assembler indexiert auf AVR Flash zugreifen?

Gast #36473
Hallo.
Für eine Schrittmotorsteuerung will ich Werte im Flash lesen.
Eigentlich will ich ein Register als Index verwenden (Array).
Es gibt aber keinen Befehl ADIW rd,r1
Ich habe mir jetzt mit einer Schleife und ADIW rd,k63 beholfen.
Aber schön finde ich das nicht.
Was mache ich wenn meine Look-Up-Tables mal grösser sind als 4
Einträge?

Dank im Voraus.

.
.
.

  ldi ZH, high((pattern)*2)
  ldi ZL, low((pattern)*2)

TCmp1C:
  cpi temp1, 0
  breq TCmp1D
  adiw ZL, 2
  dec temp1
  rjmp TCmp1C
TCmp1D:
  lpm ; Programmspeicher nach r0
.
.
.
pattern:  .dw  0x0009, 0x000c, 0x0006, 0x0003
Gast
richtig aber danach ist dann

lsl ZL
rol ZH

zur Adresskorrektur erforderlich

  ldi  ZH, high(pattern)
  ldi  ZL, low(pattern)
  add  ZL,temp1
  brcc PC + 2
  inc  ZH
  lsl  ZL
  rol  ZH
Gast
Hi.
Nochmals danke. Aber jetzt musste ich doch eine Weile überlegen.

Wenn bezogen auf deinen ersten Code mein temp1 als Byteoffset
vorliegt,
(Also quasi temp1 = 2 * temp1) muss ich doch nix korrigieren.

Dein zweite Code bezog sich doch auf die Annahme, dass temp1 die
Wortdifferenz ist, oder? Dann wird aber mit lsl ZL und rol ZH die
gesammte Adresse geshiftet. Das geht aber nur, wenn 'pattern' ein
Wort index ist, aber nicht mit einem Label, so wie ich's in meinem
ersten Code verwende?

Oder hab ich jetzt krumm gedacht?

Danke für Geduld
    Dirk

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.