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
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
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.
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
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
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
Na, na, Kinder. :-) Wegen so eines Lapsus beim tippen müsst Ihr Euch doch nicht gleich so angiften.
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
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.