Forum: Mikrocontroller und Digitale Elektronik AVR Ramadressierung


von anfänger0815 (Gast)


Lesenswert?

Hallo Forum,

als erstes, ich habe bereits gegoogelt, nur nichts gefunden, warum auch 
immer, wsl der falsche Suchbegriff. Ich weiß im Moment nicht genau, nach 
was ich suchen soll. Darum hoffe ich hier Hilfe zu erhalten.
Ich habe bis jetzt mit dem ATtiny 2313 gearbeitet, da war das Ram 128 
Byte groß und man konnte es mit 8 Bit ansprechen. Jetzt würde ich gerne 
mit einem Attiny48 arbeiten, da ist das Ram 512 Byte groß und das ist 
mein Problem. Wie mache ich das bei einem einfachen LDS-Befehl, da 
passen nur 8-Bit als Ramadresse dahinter. Muß ich jetzt alles über die 
drei 16-Bit Register (X,Y,Z) adressieren. Gibt es eine Einstellung im 
Assembler, der Zuweisungen von bestimmten Variablen nur in den ersten 
256 Bytes macht?
Kann mir jmd helfen. Danke

von H.Joachim S. (crazyhorse)


Lesenswert?

Die Adressierungsarten sind doch im Datenblatt gut beschrieben....

direkt mit lds/sts
Oder indirekt über x,y,z
im Fall von z auch mit offset

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Dazu gibt es das AVR Instruction set manual, ich habe eine Weile suchen 
müssen, früher bei Atmel hieß es noch DOC0856, jetzt:
http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf
Die einfachste RAM-Adressierung steht auf Seite 16, "Data Direct 
Addressing".
Damit kann man bis zu 65536 Byte adressieren, erst für mehr als 64k RAM 
braucht man anderes.

von spess53 (Gast)


Lesenswert?

Hi

>Wie mache ich das bei einem einfachen LDS-Befehl, da
>passen nur 8-Bit als Ramadresse dahinter.

Nein. LDS enthält Bit-Adressen. Lies mal das Instruction-Set.

MfG Spess

von leo (Gast)


Lesenswert?

spess53 schrieb:
> Nein. LDS enthält Bit-Adressen. Lies mal das Instruction-Set.

Schwachfug.
1
74. LDS – Load Direct from Data Space
2
...
3
LDS Rd,k 0 ≤ d ≤ 31, 0 ≤ k ≤ 65535 PC ← PC + 2

Damit sind (ohne Paging) 64 kByte ansprechbar.

leo

von spess53 (Gast)


Lesenswert?

Hi

>LDS Rd,k 0 ≤ d ≤ 31, 0 ≤ k ≤ 65535 PC ← PC + 2
>Damit sind (ohne Paging) 64 kByte ansprechbar.

Was ist denn K? Eine 16-Bit-Adresse.

Was ist daran 'Schwachfug'?

MfG Spess

von Theor (Gast)


Lesenswert?

Na, na, Kinder. :-) Wegen so eines Lapsus beim tippen müsst Ihr Euch 
doch nicht gleich so angiften.

von leo (Gast)


Lesenswert?

spess53 schrieb:
> Was ist denn K? Eine 16-Bit-Adresse.

Steht doch da - eine 16 Bit Zahl

> Was ist daran 'Schwachfug'?

Dass LDS eben keine Bitadressen nimmt, sondern Bytes addressiert.

> Lies mal das Instruction-Set.

Eben.

leo

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

spess53 schrieb:
> LDS enthält Bit-Adressen.

Das ist aber sehr wohl missverständlich. Man könnte fast schon meinen, 
das es hier um sowas wie die 'Bit Adressable Area' wie beim 8051 geht.
Besser ist 'LDS enthält 16-Bit Adressen', dann wäre es klar.

von spess53 (Gast)


Lesenswert?

Hi

>Besser ist 'LDS enthält 16-Bit Adressen', dann wäre es klar.

Tschuldigung. Das '16-' hatte ich beim korrigieren aus Versehen 
gelöscht.

MfG Spess

von Sebastian S. (amateur)


Lesenswert?

Ich habe zwar schon ewig und drei Tage nicht mehr in das Instruction Set 
Manual geschaut, aber für "Problemkinder" waren damals, zu jedem Befehl, 
Bleistifte verfügbar.

von anfänger0815 (Gast)


Lesenswert?

Vielen Dank für eure Hilfe. Jetzt kapier ich die ganze Sache. Vielen 
Dank noch mal.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.