Hallo, ich möchte gerne 3 Pins des PCF8574 als Ausgang benutzen und 5 Pins als Eingang. An den Eingängen soll ein fertiges Modul gehängt werden, welches definiert High (5V) und Low (0V) liefert, also kein Tristate. An die Ausgänge sollen drei Transistorschaltstufen, welche wiederum ein Relais schalten. Nun meine Frage: Woher weis der IC was ich als Eingang und was ich als Ausgang beschaltet habe? Es gibt ja kein Richtungsregister in diesem IC. Was passiert, wenn ich ein Byte in den IC schiebe mit den Bits für die Eingänge auf Low, während das Fertigmodul an seinen Ausgängen High hat? Das müsste doch einen Kurzschluss geben. Aus dem Datenblatt kann ich nur soviel entnehmen, dass der IC das scheinbar über den Strom erkennt. Aber wie funktioniert das genau? Oder kann ich den IC nur komplett entweder als Eingang oder also Ausgang benutzen? Danke schon mal Sven
Sven Stefan wrote: > Nun meine Frage: Woher weis der IC was ich als Eingang und was ich als > Ausgang beschaltet habe? Es gibt beim 8574 keine echten Eingänge. Ein Ausgang im "high" Zustand liefert so wenig Strom, dass er gefahrlos kurzgeschlossen werden kann. Das nennt sich dann Eingang.
Hallo Sven, ich bin auch ein PCF8574 Neuling;-) Wie dem Datenblatt zu entnehmen ist, ist das reinschieben kein Problem, da die Ausgaenge erst mit dem STOP Signal gesetzt werden. Also, es gibt auf keinen Fall ein Problem mit Bits die beim "reinschieben" die Ausganege kurzzeitig veranderen wuerden. Ds geht einfach nicht. Die Port pins koennen gemischt als Ein und Ausgaenge betrieben werden, solange man aufpasst dass die Einganege vorher immer auf H gestellt werden, sonst liest man nur ein L Pegel und der Eingang ist ein Kurzschluss fuer das Externe Signal. Da man muss dann schon aufpassen. Am Besten immer mit einer Maske arbeiten die ein versehentliches Verstellen der Portbits verhindert, so wie: portbits = portbits | 0b00000001; // Um BIT0 hochzustellen portbits = portbits & 0b11111110; // Um Bit0 wieder zu loeschen (Oder portbits &= 0xFE;) Mit dieser Methode bleiben die anderen Portbits unbeinflusst. Solange man nicht explizit die Ausgaenge mit den externen Signalen auf Null stellt, kann da eigentlich nichts passieren. Andernfalls wuerde ich zu Sicherheit vorschlagen Schutzwiderstaende in Serie einzubauen(240 Ohm) die das Schlimmste verhindern wuerden. Der 8574 hat ja nur 100uA Hochziehfaehigkeit. Also kann da nicht viel in der Hinsicht passieren. Nur mit dem Null stellen der Eingange musst Du aufpassen und ggf. das Datenwort immer mit einer Maske beschuetzen, die sicherstellt dass die Eingaenge immer einen H-Pegel haben. Solange die Datenregister alle auf Hoch stehen, kann der 8574 den Zustand der Ports richtig lesen. Natuerlich wenn irgendein Bit auf Null steht, dann geht das mit dem Port Lesen nicht. MFG, Gerhard
Das heißt also, wenn ich die drei Ausgänge verändern will, ist es besser, wenn ich die restlichen Bits mit High sende? Denn nach GND zieht der IC ja den Ausgang schon und dann währe ein High des Fertigmodules schon fatal. Denn das liefert ja den Strom. Sehe ich das so richtig? Sven
Hallo Andreas, "Es gibt beim 8574 keine echten Eingänge. Ein Ausgang im "high" Zustand liefert so wenig Strom, dass er gefahrlos kurzgeschlossen werden kann. Das nennt sich dann Eingang." Das ist meiner Ansicht doch etwas gefaehrlich, da wenn ein Hochpegel(z.B. 5V ohne Strombegrenzung)) anliegt und dann ein Portbit (versehentlich) auf Null gestellt wird, dann wird der Ausgang ueberlastet. Gruss, Gerhard
Danke Gerhard, so hatte ich mir das schon gedacht, war mir aber nicht sicher. Das mit Widerständen in Reihe ist eine gute Idee. Werde ich mit vorsehen und schadet ja nicht. Hilft aber, falls ich mich doch mal verprogrammiere. Sven
Hallo Sven, das stimmt genau. Mit H-Pegeln kann nie was passieren. Sonst nimm Schutzwiderstaende.
Besseren Stein nehmen: PCA 9554 mit Steuerregister für I/O-Zuweisung der Pins.
Bei meinen Schaltungen, baue ich zum Schutz von externen Leitung so oft es geht, immer Schutzwiderstaende ein, weil dann die Ausgaenge (bei Ueberspannung) immer eine gewissen Uberlebensschutz aufweisen, da bei normalen Fehlspannung dann der Strom so begrenzt ist, dass die interne Schaltung das einigermassen aushaelt oder gar ein "interner Latchup" verhindert wird. Gerhard
Gerhard. wrote:
> Das ist meiner Ansicht doch etwas gefaehrlich
Ich hatte es deshalb ja auch ausdrücklich anders herum beschrieben.
Hallo Bernd, "Besseren Stein nehmen: PCA 9554 mit Steuerregister für I/O-Zuweisung der Pins." Der interessiert mich auch. Welche Erfahrungen hast Du mit dem PCA9554 schon gemacht? Den gibts ja auch mit DIP16 Gehaeuse. Dem Datenblatt nach ist das ja ein feiner Baustein. Gerhard
Andreas,
Gerhard. wrote:
> Das ist meiner Ansicht doch etwas gefaehrlich
"Ich hatte es deshalb ja auch ausdrücklich anders herum beschrieben."
Stimmt;-)
Gerhard
Hat bei mir bestens geschnurpelt. Ich hatte das Problem mit der I/O-Zuweisung derart, daß ich 3 + 5 brauchte. Da der \INT dann nur noch von wirklichen Eingängen ausgelöst wird, vereinfacht sich die SW leicht (die hatte ich allerdings wegen Blödheit nicht selbst gemacht - war zu umfangreich). Das Ding ist eben einfach moderner, auch schneller. Warum soll man mit der Technik von Gestern die Geräte für Morgen bauen?
Hallo Bernd, werde mir vielleicht bei einer neuen Bestellung ein paar zukommen lassen. Mit den Bausteinen geht es doch eleganter. Frueher habe ich uebriegens oft die MAX7301 eingesetzt, sind aber SPI. Nur finde ich I2C etwas angenehmer da man keine aufwendigen Chip Selects braucht. "Das Ding ist eben einfach moderner, auch schneller. Warum soll man mit der Technik von Gestern die Geräte für Morgen bauen?" - Das ist schon wahr;-) Gerhard
Den 9554 gibt aber nicht als DIP bei R. Mit SMD tue ich mich noch ein wenig schwer.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.