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
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.