PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PCF8574 Ausgänge und Eingänge



Baui
08.01.2006, 15:37
Moin Jungs,
ich habe nochmal juste eine Frage bezüglich des PCF Bausteins. Habe im Datenblatt gelesen, dass die einzelnen Pins unabhängig voneinander als Ein- oder Ausgänge genutzt werden können.
Folgender Aufbau:
Ich habe an den Pinnen 1-4 eine Treiberstufe angeschlossen und an den Pinnen 5-8 Sensoren.

Wenn ich das jetzt alles richtig verstanden habe, schalte ich die Pinne 1-4 indem ich in der Adresse das letzte Bit auf 1 setze und dann folgendes Datenwort sende:
1111 0101 (letzten vier zum Schalten, ersten vier Bits bleiben auf High, da Eingang)

will ich jetzt den Zustand der Sensoren erfragen sende ich in der Adresse eine 0 als LowestBit und lese das Byte ein.


So jetzt aber meine eigentliche Frage. Was passiert, wenn ich jetzt versehentlich doch einen Eingang schalte. Also wenn an Pin 7 ein HIGH-Pegel anliegt, und ich ihn auf Low schalte, dann gibt es doch einen kurzschluss der meinen schönen Baustein zerstört.

Ist das so oder vertue ich mich da. Ich muss ja sonst höllisch aufpassen, dass jeder PCF auch wirklich die richtigen Daten bekommt (und das ist in der Testphase nicht immer zu 100% sichergestellt ;-))

wäre nett wenn ihr mir mal kurz nen Denkanstoss gebt.

Gruß
Baui

Ratber
08.01.2006, 16:16
So jetzt aber meine eigentliche Frage. Was passiert, wenn ich jetzt versehentlich doch einen Eingang schalte. Also wenn an Pin 7 ein HIGH-Pegel anliegt, und ich ihn auf Low schalte, dann gibt es doch einen kurzschluss der meinen schönen Baustein zerstört.

Ja,so isses.
Genauso wie beim Controller und fast allen Digitalen Bausteinen.



Wenn ich das jetzt alles richtig verstanden habe, schalte ich die Pinne 1-4 indem ich in der Adresse das letzte Bit auf 1 setze und dann folgendes Datenwort sende:
1111 0101 (letzten vier zum Schalten, ersten vier Bits bleiben auf High, da Eingang)

Denk mal nach.
Was kannst du mitteilen ?
Du hast Zwei Adressen.
Eine für Schreiben und eine für lesen.(Letztes Bit 0 oder 1)
Beim Lesen gibst du nur die Adresse und nach dem Ack kommen schon die Daten aller 8 Bits vom 8574.
Beim Schreiben lieferst du selber die 8 Bits "für" den ganzen Port..


Beim PCF8574 ist kein Datenrichtungsregister vorhanden.

Baui
08.01.2006, 17:39
Beim Schreiben lieferst du selber die 8 Bits "für" den ganzen Port..
soll mir das sagen, dass es doch nicht möglich ist einen PCF mit Eingängen und Ausgängen gleichzeitig zu betreiben, sondern immer den kompletten PCF als Eingang ODER Ausgang?

Gruß
Baui

Ratber
08.01.2006, 18:05
Letzteres


Nimm einfach Zwei Bausteine.

fwallenwein
23.01.2006, 14:08
Letzteres


Nimm einfach Zwei Bausteine.

Ich bin verwirrt.
Was bedeutet dann das


Each of the PCF8574’s eight I/Os can be independently
used as an input or output. Input data is transferred from
the port to the microcontroller by the READ mode
(see Fig.11). Output data is transmitted to the port by the
WRITE mode (see Fig.10).

im Datenblatt ?

Gruss
Frank

Ratber
23.01.2006, 14:16
Das bedeutet das du den Baustein als Ein "oder" ausgang benutzen kannst.

Das Busprotokoll läst es auch nicht anders zu.

Ob du liest oder schreibst bestimmst du mit der Adresse und übertragen werden "immer" alle 8 Bit
Entweder du liest 8 Bit oder du schreibst 8 Bit.

Deswegen ist es einfch gesagt nicht möglich gemischt zu fahren.
Mit etwas tricksereich würde es gehen aber der Aufwand wäre so hoch das man lieber nen Zweiten 8574 nimmt und beides trennt.

kalledom
23.01.2006, 14:33
7.3 Quasi-bidirectional I/Os (see Fig.14)
A quasi-bidirectional I/O can be used as an input or output
without the use of a control signal for data direction.
At power-on the I/Os are HIGH. In this mode only a current
source to VDD is active. An additional strong pull-up to VDD
allows fast rising edges into heavily loaded outputs. These
devices turn on when an output is written HIGH, and are
switched off by the negative edge of SCL. The I/Os should
be HIGH before being used as inputs.

Ratber
23.01.2006, 15:56
Ja,genau.
Da stehts ja.

Danke.

fwallenwein
23.01.2006, 16:46
Na wenn Du meinst ......
Ich lese das aber immer noch als ob "Eingang und Ausgang" möglich sind, so wie Baui das geschrieben hat.



Wenn ich das jetzt alles richtig verstanden habe, schalte ich die Pinne 1-4
indem ich in der Adresse das letzte Bit auf 1 setze und dann folgendes
Datenwort sende:
1111 0101 (letzten vier zum Schalten, ersten vier Bits bleiben auf High,
da Eingang)


... oder habe ich mich gerade "Gedanklich vergallopiert"
Probiert habe ich es natürlich noch nicht.

Ratber
23.01.2006, 16:58
Ja,was soll ich dir den noch sagen ?

"Na wenn du meinst...." wäre jedenfalls nicht das richtige obwohl das Einfachere. :wink:

Setz dich doch mal mit dem Busprotokoll auseinander dann wirst du verstehen das es unmöglich ist die Bits getrennt als Ein und Ausgänge zu behandeln.


Wenn du Als Ausgang sendest dann bist du gezwungen 8 Bit als Daten zu senden,nicht 7,nicht 9,genau 8.
Alles andere macht die Übertragung ungültig.

Gleiches gilt für das Auslesen als Eingang.
Du must alle 8 Bits lesen und damit machst du alle 8 Bit zum Eingang.


Wenn du uns schon nicht glauben willst dann versuch es doch einfach.
Probieren geht über studieren und mehr als nen Baustein kostets auch nicht :wink:

kalledom
24.01.2006, 12:38
Wenn Du Pins als Eingänge nutzen möchtest, müssen die entsprechenden Bits beim Setzen von Ausgangs-Bits auf High (strong pull-up to VDD) bleiben.
Beim Auslesen erhälst Du neben den Eingangs-Zuständen gleichzeitig die Ausgangs-Zustände. Welcher Pin Eingang oder Ausgang ist, mußt Du selber 'verwalten'. Es werden immer 8 Daten-Bits gesendet und empfangen.

fwallenwein
24.01.2006, 13:56
@kalledom

So habe ich das Datenblatt auch verstanden.
Gruss Frank

Ratber
24.01.2006, 14:47
Ja,Probier einfach dann merkste schon :wink:

kalledom
24.01.2006, 14:51
So jetzt aber meine eigentliche Frage. Was passiert, wenn ich jetzt versehentlich doch einen Eingang schalte. Also wenn an Pin 7 ein HIGH-Pegel anliegt, und ich ihn auf Low schalte, dann gibt es doch einen kurzschluss der meinen schönen Baustein zerstört. Ein High an einem Pin kommt über eine StromQuelle von Plus und liefert nur ca. 100 Mikro-Ampere, auch wenn ich den Pin nach GND lege.
Es darf allerdings kein Plus an einen Pin gelegt werden, der Low ist; dann raucht es.