mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zur Programmierung der AVRs (Adressraum)


Autor: AVR Coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hab zur Programmierung der AVRs mal ne Frage. Laut Datenblatt ist der
Adressraum ja wie folgt unterteilt:

0000..001F: 32 General Purpose Register (R0..R16)
0020..005F: 64 IO Register
ab 0060: interner bzw. externern RAM

Kann man dann auf die Register auch über den Speicher zugreifen? Quasi

lds r16,4 statt mov r16,r4 oder
sts $2F,r16 statt out $F,r16?

Oder wird der Bereich 0..5F aus dem regulären Adressbereich
ausgeblendet?

Autor: AVR Coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pardon, meinte

0000..001F: 32 General Purpose Register (R0..R32)

statt

0000..001F: 32 General Purpose Register (R0..R16)

Autor: André Kronfeldt (freakazoid)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, geht. Der AVR-GCC macht das auch, wenn er keine Codeoptimierung
machen soll.

Autor: AVR Coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und noch ne Frage hinterher:

wie kann man bei 128kB Flash auf die oberen 64k zugreifen? LPM erlaubt
ja nur Zugriff auf die unteren 64...

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und auch der stack kann den bereich nutzen, aber funktioniert nicht
wirklich gut...

Autor: AVR Coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke @André

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kann man dann auf die Register auch über den Speicher zugreifen?

"Über den Speicher" kann man so nicht sagen. in dem Bereich 0x00 bis
0x5F ist kein Speicher. Man kann auf die allgemeinen Register und die
I/O-Register aber tatsächlic so zugreifen, wie du meinst.

> lds r16,4 statt mov r16,r4 oder
> sts $2F,r16 statt out $F,r16?

Ja, das geht. Ist halt etwas langsamer, aber dafür kann man auch
indirekt zugreifen und damit einen Zeiger machen, der auch auf ein
Regiter zeigen kann.

> Oder wird der Bereich 0..5F aus dem regulären Adressbereich
> ausgeblendet?

Nein, denn sonst wäre ja die Angabe, daß da Register sind, ziemlich
nutzlos.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wie kann man bei 128kB Flash auf die oberen 64k zugreifen? LPM
> erlaubt ja nur Zugriff auf die unteren 64...

ELPM

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... und "RAMPZ Register"

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.