www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu 8574 I2C I/O-Expander


Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Gerhard. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gerhard. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gerhard. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sven,
das stimmt genau. Mit H-Pegeln kann nie was passieren. Sonst nimm 
Schutzwiderstaende.

Autor: Bernd G. (Firma: LWL flex SSI) (berndg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besseren Stein nehmen: PCA 9554 mit Steuerregister für I/O-Zuweisung der 
Pins.

Autor: Gerhard. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerhard. wrote:

> Das ist meiner Ansicht doch etwas gefaehrlich

Ich hatte es deshalb ja auch ausdrücklich anders herum beschrieben.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bernd G. wrote:

> PCA 9554 mit Steuerregister für I/O-Zuweisung der Pins.

Oder MCP23008/16.

Autor: Gerhard. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gerhard. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas,

Gerhard. wrote:

> Das ist meiner Ansicht doch etwas gefaehrlich

"Ich hatte es deshalb ja auch ausdrücklich anders herum beschrieben."

Stimmt;-)

Gerhard

Autor: Bernd G. (Firma: LWL flex SSI) (berndg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Gerhard. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den 9554 gibt aber nicht als DIP bei R. Mit SMD tue ich mich noch ein 
wenig schwer.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.