Rd Rr im indirekten Adressierungsmodus

Gast #98381
Lesenswert?

Wo finde ich eine genaue Zuordnung, welche Rd bzw. Rr Register in den
jeweiligen Adressierungsmodi erlaubt sind?

Ich raufe mir seit einer Stunde an einer kleinen Programmpassage die
Haare und bin mir nicht sicher, ob ich die richtigen Register benutze.
Das AVR Handbuch von ATMEL schweigt sich da aus. Es sagt z.B. im
LD Rd,Y+ ist Rd Zielregister. (S. 4-7) Auf Seite 4-9 steht dann:

"Rd: R0-R31 or R16-R31, (depending on instruction)"

      ldi YL,low(2*data)
      ldi YH,high(2*data)
loop: ld r0,Y+
      tst r0
      breq l1
      ....
      rjmp loop
l1:   ret


Obiger Code funktioniert nicht.

     ldi ZL,low(2*data)
     ldi ZH,high(2*data)
loop: lpm
      tst r0
      breq l1
      ....
      adiw ZL,1
      rjmp loop
l1:   ret

Letztere Passage funktioniert.
Gast #98383
Lesenswert?

LD Rd,Y :  Rd<-(Y)

LPM      : R0<-(Z)

Ich sehe da keinen Unterschied, lediglich, daß im LPM Falle
fest R0 als Ziel genommen wird, im ersteren Fall ein beliebiges Rd.

Liegt der Unterschied vielleicht im Wort "Program memory". Kann
ich damit nicht vom SRAM laden?
Gast #98384
Lesenswert?

ld
Load indirect rom data space

lpm
Load indirect from program memory

>Liegt der Unterschied vielleicht im Wort "Program memory". Kann
>ich damit nicht vom SRAM laden?
Könnte sein ;-)
Aus dem Flash (=program memory) bekommt Du Daten NUR mit lpm. Der AVR
ist eine Havard-Architektur, d.h. Daten- und Programmspeicher sind
komplett voneinander getrennt. Flash und RAM unterscheiden sich also
nicht nur durch ihre Adresse, sondern grundlegend durch die Art des
Zugriffs.

Stefan
Gast #98385
Lesenswert?

Stefan, Du schreibst:
> ld
> Load indirect rom data space
                ^^^
> lpm
> Load indirect from program memory

rom? ram?

Havard? Harvard?

Etwas genauer bitte. Im ersten Falle ist ein a oder o
sicher wichtig. Im zweiten ein fehlendes 'r' vielleicht nicht so.
Gast #98387
Lesenswert?

Oh sorry, gleich 2 Rechtschreibfehler.

Load indirect rom data space
sollte natürlich
Load indirect from data space
heissen.

Ist übrigens ein Zitat aus der Befehlsliste.

Macht richtig Spass, Dir Tips zu geben.

Stefan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren