Frage zur Programmierung der AVRs (Adressraum)

Gast #314062
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?
Gast #314068
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.

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