Verständnisfrage zu IO-Directionregister

Gast #900407
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
Gast #900418
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.
Gast #900421
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.
Gast #900423
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.
Gast #900436
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???
Gast #900443
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.
#900599
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
Gast #900608
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren