Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage zu IO-Directionregister


von MC (Gast)


Lesenswert?

Tag an alle,
ich kann nirgends herausbekommen, warum so viele RISC-Prozessoren 
Directionregister für ihre IO-Ports haben. Wieso benutzen die  keine 
(quasi)bidirekionalen Ports wie z.B. der 8051?
Das ständige umstellen der Richtung ist doch lästig.

Danke schon mal für eure Antworten,
MC

von Matthias L. (Gast)


Lesenswert?

>Das ständige umstellen der Richtung ist doch lästig.

WIeso? Benutzt du deine Pins alle paar (Mikro)Sekunden abwechselnd als 
Ein- und Ausgang?

>(quasi)bidirekionalen Ports wie z.B. der 8051?
Die sind doch Unfug!

Die haben einen Pull-Up Widerstand und einen Pull-Down-Transistor.
Als Ausgabe kann man nun nur zwischen Active-Low und passiv-High wählen.
Das ist nicht besonders geeignet, um schnell-schaltende Signale 
auszugeben.
(naja gut, der 8051... für den ist wohl was anderes schnell... ;-)

Bei den Atmels kann hat active-High UND active-Low.
Und wenns als Eingang konfiguriert ist, dann ist der Ausgangstreiber in 
High-Z und der Pin ist somit eingang.

von w. (Gast)


Lesenswert?

Dafür hast du hir Gegentaktausgänge, also aktiv low undaktiv high.

altenativ extern pullups verwenden, den port immer low lassen und mit 
dem direktion register den Ausgang setzen. beim einlesen erhälstdes 
ports dann verhält sich der Port, wie du es  vom 51er gewohnt bist.

von w. (Gast)


Lesenswert?

edit

Dafür hast du hier Gegentaktausgänge, also aktiv low undaktiv high.

Altenativ kanst du externe Pullups verwenden, den Port immer low lassen 
und mit dem direktionregister den Ausgang setzen. Dann verhält sich der 
Port, wie du es  vom 51er gewohnt bist.

von Timmo H. (masterfx)


Lesenswert?

@ w. (Gast)
Wenn du dich anmeldest kannst du auch richtig editieren anstatt einen 
neuen Post zu machen

von MC (Gast)


Lesenswert?

>WIeso? Benutzt du deine Pins alle paar (Mikro)Sekunden abwechselnd als
>Ein- und Ausgang?
z.B. bei einer Software-I2C.

>Die sind doch Unfug!
Wieso?

>altenativ extern pullups verwenden,
also mehr externe Bauteile.

Leute, ich möchte mich jetzt nicht mit euch streiten.
Mich interessiert eigentlich, warum das genau so ist. Hat das 
irgendeinen Vorteil bezüglich der Architektur oder so???

von Matthias L. (Gast)


Lesenswert?

>bezüglich der Architektur oder so???

Das ist einiges aufwändiger als im 8051.
Hat aber Vorteile bezgl. der QUalität der Ausgangssignale (schnelle 
Signale)

>z.B. bei einer Software-I2C.
Die meisten AVRs haben Hardware I2C. Da wird die Umschaltung 
entsprechend automatisch gemacht. Software I2C ist doch eh nicht so 
schnell.
Alternativ:
>>Altenativ kanst du externe Pullups verwenden, den Port immer low lassen
>>und mit dem direktionregister den Ausgang setzen. Dann verhält sich der
>>Port, wie du es  vom 51er gewohnt bist.

von MC (Gast)


Lesenswert?

>Hat aber Vorteile bezgl. der QUalität der Ausgangssignale (schnelle
Signale)
Das ist des Rätsels Lösung!?

von w. (Gast)


Lesenswert?

Ja,
aktiv lOW und aktiv high gibt in beide Richtungen belastbare Signalpegel 
und steile Flanken beim Potentialwechsel

von Sven P. (Gast)


Lesenswert?

Spart für mich als Anwender reichlich Bauteile drumrum. Für Atmel fällt 
das vielleicht in die Schublade "Da is noch Platz aufm Chip und teurer 
wirds auch net -- also machen wirs doch so."

von Peter D. (peda)


Lesenswert?

Matthias Lipinsky wrote:
> Das ist einiges aufwändiger als im 8051.
> Hat aber Vorteile bezgl. der QUalität der Ausgangssignale (schnelle
> Signale)

Nö, die Schaltflanken sehen beim 8051 auch gut aus.
Der Trick ist, daß beim 0->1 Schalten für 2 Taktzyklen ein starker P-FET 
nach VCC zieht.
Bloß dauerhaft kann der 8051 keinen hohen High-Strom liefern.

Neuere 8051 können aber auch als Gegentaktausgang gesetzt werden, d.h. 
der High-Treiber ist dann dauerhaft an.


>>z.B. bei einer Software-I2C.

Da setzt man dann den Ausgangspin einmalig auf low und schaltet immer 
nur das DDR-Bit um (DDRx = 1: low, DDRx = 0: high).


> Software I2C ist doch eh nicht so
> schnell.

Ganz im Gegenteil, SW-I2C ist viel zu schnell. Da müssen noch massig 
NOPs oder Delays rein, um die 100kHz einzuhalten.
SW-I2C ist aber einfacher zu verstehen und zu implementieren als HW-I2C.



Peter

von Matthias L. (Gast)


Lesenswert?

>SW-I2C ist aber einfacher zu verstehen und zu implementieren als HW-I2C.

Meinst du? Kann ich mir nicht vorstellen, dass das einzelne 
Bit-geschubse für das Verständnis sorgt. Aber will es mal nicht 
abstreiten.

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.