Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage zu AT90CAN128 Port- und Speicheradresse


von Darius Zohurian (Gast)


Lesenswert?

Hallo,

Ich habe schon einige ähnliche Fragen im Forum gefunden, aber es war
leider keine dabei, die mich "befriedigen" konnte, ist aber wohl
keine Profi Frage.

Folgendes...

Ich weiß, dass es eine Speicheradresse und eine Port Adresse für z.B.
den PINB (0x23, 0x03) gibt.

Wenn ich jetzt den PINB abfragen möchte, z.B. mit
if(PINB & _BV(PB5))

wo wird der Wert abgefragt, bzw. welche Adresse wird genommen, die Port
Adresse oder die Speicheradresse?

Genauso stelle ich mir die frage, wenn ich

PORTA = 0x01; (PA1 ist ein Ausgang), setze, wo wird der Wert
hingeschrieben, dort wo die Speicheradresse ist oder bei der Port
Adresse?

Den Unterschied der beiden Adresse verstehe ich nicht (im Bezug auf das
schreiben und lesen von Ports,Pins,oder DDR Register), wann wird etwas
in die Portadresse und wann in die Speicheradresse geschrieben?

Für eine Klare Antwort wäre ich sehr dankbar,

Mit freundlichen Grüßen
Darius

von Wolfgang Weinmann (Gast)


Lesenswert?

Hallo,

ich hoffe, daß ich aus dem Kopf alles richtig zusammenbekomme. Außerdem
benutze ich nen ATMEGA8, aber ich denke es kommt aufs gleiche raus.

Sprechen wir mal von Speieradressen:
Die untersten 32(dez.) Speicheradressen (0-31) werden von Registern
belegt.
Dann fangen die Special Funktion Register (SFR)an: Ab Speicheradresse
32 (dez.)Diese SFRs sind über Speicherbefehle (lds, sts) und über
IO-Befehle (In, OUT) ansprechbar. Also auf zwei verschiedene Art und
Weisen.

Nehmen wir das SFR mit der niedrigsten Adresse: Das SFR an
Speicheradresse 32 (dez.). Dieses ist genauso über die IO-Adresse 0
anzusprechen.

Das SFR an Speicheradresse 33 (dez.)kann mit den Speicherbefehlen LDS,
STS angesprochen werden und  ist genauso über die IO-Befehle IN, OUT an
IO-Adresse 1 anzusprechen.

Das geht so fort bis zur Seicheradresse $5F (jetzt hex.), das mit der
IO-Adresse 3F über in/Out ansprechbar ist.


Da sieht man schon mal folgendes: Es gibt einen Offset von dez. 32:
Den kleineren Wert für die IO-Adressierung, den größeren für die
Speicheradressierung.

Ab Speicheradresse $60 steht dann nur noch der Speicherbefehl zur
Verfügung.

Aber das erledigt beim Einsatz eines Compilers dieser für Dich.
Die IO-Adressierung ist halt etwas schneller(1 Takt statt 2 Takten bei
Speicheradressierung).

So - hoffe das hat weitergeholfen.

Gruß

Wolfgang Weinmann

--
www.ibweinmann.de
Mikrocontrollersysteme

von Darius Zohurian (Gast)


Lesenswert?

Hallo,

also wenn ich ehrlich bin, habe ich es nicht verstanden, wo die
Register liegen weiss ich.
Ich möchte nur wissen, wann ich auf die Speicheradresse zugreife und
wann auf die Portadresse?

Vielleicht kann mir ja jemand zwei befehle zeigen, wo jeweils eine
Adresse verwendet wird.

Gruß
Darius

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.