Forum: Mikrocontroller und Digitale Elektronik Verwendung von lds und in


von Christian Widtmann (Gast)


Lesenswert?

Hallo!

Ich habe eine Frage zu den Assembler-Befehlen lds und in, und zwar
welcher Befehl ist auf welche Register anwendbar? Speziell geht es um
einen Atmega16.
MCUCR ist z.B. mit lds ansprechbar, ebenso GICR und GIFR, ACSR benötigt
aber in. Woran kann ich erkennen, welches Register in den Speicher
gemappt wird und welches nicht? Bzw. ist es das sicherste, einfach alle
Steuer- und Kontroll-Register mit "in" einzulesen? Wohin werden die
verschiedenen Register gemappt? Das Manual konnte mich da leider nicht
hinreichend aufklären.

mfg
Christian

von Conlost (Gast)


Lesenswert?

Hallo,
Der Befehl "lds" läd vom SRam und der Befehl "in" läd
von den Ports.

Erklärungen zu den Befehlen findest du hier:

http://www.atmel.com/dyn/resources/prod_documents/DOC0856.PDF

Gruß,
Arno

von Christian Widtmann (Gast)


Lesenswert?

Aber warum kann ich dann manche Steuerregister mit lds einlesen, und
andere wiederum nur mit in? Das ist mir bei der Sache nicht ganz klar.
Werden die Register nicht alle in den data space gemappt, gleich nach
den 32 general purpose Registern?
ACSR z.B. hat sich geweigert, mit lds gelesen zu werden, obwohl es doch
in dieselbe Klasse von Registern fällt wie GICR und GIFR, die sich
problemlos mit lds lesen lassen.

von Christian Widtmann (Gast)


Lesenswert?

Inzwischen hab ich den Unterschied glaub ich verstanden, danke für den
Hinweis.

mfg
Christian

von Jörg Wunsch (Gast)


Lesenswert?

Die IO-Register werden übrigens allesamt in den data space gemappt.
Allerdings kostet der Zugriff über dieses MMIO (memory-mapped IO)
Interface einige Befehle/Taktzyklen mehr, der über IN/OUT ist
schneller.  Andererseits ist der Adreßraum für IN/OUT eingeschränkt,
so daß Atmel dort nur die Register zugreifbar gemacht hat, die man
häufig benötigt (insbesondere PORTn/DDRn/PINn, SREG, SP etc.), während
MMIO alle Ports addressieren kann.

AVR-GCC fährt daher auch die policy, erstmal alle IO-Register als MMIO
anzusehen und dann in der Optimierungsphase zu entscheiden, ob der
schnellere Zugriff via IN/OUT stattdessen genutzt werden kann.

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.