Forum: Mikrocontroller und Digitale Elektronik Assembler - IN / OUT vs. LDS / STD


von Sebastian Z. (sebastian_z14)


Lesenswert?

Hallo zusammen,

ich versuche die Assemblerdirektiven der 8Bit-Controller von Atmel (am 
Beispiel AVR 2560) "zu durchdringen" und stehe vor dem Problem, dass ich 
nicht verstehe, warum man

a) warum es zu den Load & Store Befehlen noch die In/Out Befehle 
existieren. Ich kann doch mit "IN" und "LDS" genau das gleiche bewirken?

b) warum sich zwei Addressierungen auf den gleichen Speicherbereich 
beziehen ($00 bis $3F)? Einmal sind die GPIO Register mit im Boot und 
das andere mal nicht ...

c) Genau dafür haben sich die Jungs von der avrlibc die Makros
    _SFR_IO_ADDR()
ausgedacht, weil dabei einfach +0x20 gerechnet wird?

Freue mich auf Eure Hinweise

Sebastian

von Dr. Sommer (Gast)


Lesenswert?

Sebastian Z. schrieb:
> a) warum es zu den Load & Store Befehlen noch die In/Out Befehle
> existieren. Ich kann doch mit "IN" und "LDS" genau das gleiche bewirken?
IN ist 2byte lang, LDS 4byte. IN kann aber weniger Register adressieren.
> b) warum sich zwei Addressierungen auf den gleichen Speicherbereich
> beziehen ($00 bis $3F)? Einmal sind die GPIO Register mit im Boot und
> das andere mal nicht ...
Die I/O Register inkl. GPIO sind immer mit dabei, die Adressierung 
geht beim AVR durch alle I/O-Register, CPU-Register und SRAM.
> c) Genau dafür haben sich die Jungs von der avrlibc die Makros
>     _SFR_IO_ADDR()
> ausgedacht, weil dabei einfach +0x20 gerechnet wird?
Hä? das +0x20 braucht man für die Adressierung bei STS weil IN/OUT 
direkt bei 0x20 anfängt.

Sebastian Z. schrieb:
> (am
> Beispiel AVR 2560)
Meinst du ATmega2560?

von Sebastian Z. (sebastian_z14)


Lesenswert?

Hallo Dr. Sommer,

danke für die Antwort.

>> c) Genau dafür haben sich die Jungs von der avrlibc die Makros
>>     _SFR_IO_ADDR()
>> ausgedacht, weil dabei einfach +0x20 gerechnet wird?
>Hä? das +0x20 braucht man für die Adressierung bei STS weil IN/OUT
>direkt bei 0x20 anfängt.

Die 0x20 sind doch genau die 32 General Purpose Register? Also ist der 
Gedanke doch richtig?

Grüße

Sebastian

von Stephan B. (matrixstorm)


Lesenswert?

Hallo.

Ggf. seh' dir mal das Instruction Manual an:

http://matrixstorm.com/avr/files/doc0856.pdf

MfG

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.