www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik verschiedene Adressen im Register Summary des Datenblattes


Autor: Matthias K. (john_connor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei dem Register Summary des ATmega128 Datenblatts sind immer zwei 
verschiedene Adressen in einer Zeile angegeben.

Beispiel:
Adresse      |    Name          |
$3F ($5F)          SREG
$3E ($5E)          SPH

Warum gibt es verschiedene Adressen für das gleiche Register?

Autor: hmm.. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Unterschied wird in den 32 ($20) internen Registern liegen.

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das eine ist die I/O-Adresse, wie sie zB für IN/CBI/SBIC... anzugeben 
ist. Das andere ist die RAM-Adressem wie sie für STS... und 
Adressarithmetik (in avr-gcc) verwendet wird.

Johann

Autor: Matthias K. (john_connor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm.. schrieb:
> Der Unterschied wird in den 32 ($20) internen Registern liegen.

Eigentlich sind doch alle Register des Mikrocontrollers intern?
(Register befinden sich innerhalb des Míkrocontrollerbausteins)

Es gab ja mal CPU's welche auf einen erweiterten Cache auf den Mainboard 
zurückgreifen konnten. Nur da macht eine Unterscheidung interne/externe 
Register für mich Sinn.

Meinst du mit "interne Register" vielleicht Register welche nur der 
Mikrocontroller selbst verändern kann? (im Gegensatz zu Register welche 
vom Programmierer verändert werden können)

Johann L. schrieb:
> Das eine ist die I/O-Adresse, wie sie zB für IN/CBI/SBIC... anzugeben
> ist. Das andere ist die RAM-Adressem wie sie für STS... und
> Adressarithmetik (in avr-gcc) verwendet wird.
>
> Johann

Was ist dann was?
Ist die erste angegeben Adress die I/O Adresse?
Oder ist die I/O Adresse die zweite Angegebene Adresse? (welche in 
Klammer hinter der ersten Adresse steht)

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>st die erste angegeben Adress die I/O Adresse?
>Oder ist die I/O Adresse die zweite Angegebene Adresse? (welche in
>Klammer hinter der ersten Adresse steht)

Der Wert in der Klammer ist die absolute Adresse. Der Wert davor die 
IO-Adresse.
Bei den AVRs befinden sich r0..r31, IO-Adressen und RAM im gleichen 
Adressraum. Bestimmte Befehle (z.B. in/out...) addieren beim Zugriff $20 
zur angegebenen Adresse. Dadurch lässt sich der Adressbereich $20...$5F 
mit einer 6 Bit-Adresse ansprechen.

MfG Spess

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest mal (anhand des Datenblattes) den Unterschied ergründen 
zwischen:

- unteren Allzweckregistern (r0-r15), darunter die Besonderheit von
  r0 und r1
- oberen Allzweckregistern (r16-r31), darunter die Pointer-Register
- unteren 32 I/O-Registern (und ihren Zugriffsmöglichkeiten)
- oberen 32 I/O-Registern (und ihren Zugriffsmöglichkeiten)
- extended I/O-Bereich (mit seinen arg begrenzten Zugriffsmöglichkeiten)
- SRAM

Und dann solltest Du mal die Unterschiede zwischen IN, OUT und LD, LDD, 
LDS, ST, STD, STS, ergründen, dabei besonders auf die Adressierung 
achten.

Ohne dieses Wissen über die AVR-Architektur wirst Du nicht so recht 
voran kommen.

...

Autor: hmm.. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zumindest in ASM.

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beispiel: (M644)

asm:
   out portb, r16  =  sts portb, r16

beide Anweisungen sind gleichwertig.

wird übesetzt in:
   out 0x05, r16  =   sts 0x25, r16


Z8

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
edit:

3. Zeile
> out portb, r16  =  sts portb, r16

ist nonsens!

sts portb, r16 ; speichert den Wert aus r16 nicht an Adr. 0x25 sondern
               ; an Adr. 0x05

der Reset stimmt. sorry Z8

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.