Forum: Mikrocontroller und Digitale Elektronik Pcf8574 datenblatt ohne infos über register?


von Heiko (Gast)


Lesenswert?

Versuche gerade meinen ersten I2C Slave in meinem Bus anzusprechen.
Jedoch konnte ich in dem Datenblatt des PCF8574 keinerlei Infos über die 
Ansteuerung der IO's finden.
Endweder ich hatte ne sehr dunkle Brille auf oder die sind echt nicht 
drin :(
ratlos

Gibt es eigentlich Standard-Routinen um den eigenen I2C Bus zu testen?
Für den Anfang verwende ich den COde von Peter Fleury.

Heiko

von Andreas K. (a-k)


Lesenswert?

Kann es sein, dass du das Teil etwas überschätzt? Das Ding ist ein 8bit 
I/O-Port und die Ports sind ähnlich wie 8051-Ports implizit 
bidirektional, eine explizite Richtungssteuerung existiert nicht. Auch 
die Arbeitsweise des Interrupts ist nicht konfigurierbar. Also gibt es 
keinerlei Konfigurationsregister. 8-bit Daten raus und rein, fertig.

von Heiko (Gast)


Lesenswert?

Mhh OK das kann schon sein dass ich des teil überschätze.
Aber trotzdem würde mich dann interessieren wie ich dem ic unterscheide 
ob gerade daten am port anliegen oder obwas gesendet wird.

kurze info wäre da gut

von Spess53 (Gast)


Lesenswert?

Hi

Die Datenrichtung wird über das R/W-bit festgelegt. Müsste Bit0 vom 
Adressbyte sein. Also ein 'gemischter' Betrieb mit Aus- und Eingängen an 
einem IC ist nicht so richtig möglich.

MfG Spess

von Schoasch (Gast)


Lesenswert?

Das gibst du mit dem einen Bit im I2C-Frame an... da gibts ja ein 
Read-Write Bit... und nach das hält sich das IC halt.

mfg Schoasch

von Rahul D. (rahul)


Lesenswert?

>Aber trotzdem würde mich dann interessieren wie ich dem ic unterscheide
>ob gerade daten am port anliegen oder obwas gesendet wird.

Wenn du mit diesem "Satz" meinst, wie man dem PCF8574 sagt, ob er Daten 
ausgeben oder einlesen, dann solltest du dir das R/W-Bit im Adressbyte 
angucken. Das steuert die Datenrichtung.
Für die Bussteuerung ist der Master verantwortlich.

von Heiko (Gast)


Lesenswert?

OK das hab ich dann verstanden und muss erkennen dass die steuerung 
einzelner Bits nicht möglich ist.
Entweder byte schreiben oder eben lesen

von Rahul D. (rahul)


Lesenswert?

Das DIng ist eigentlich nichts anderes als ein bidirektionales 
Schieberegister mit I²C-Schnittstelle...

von Andreas K. (a-k)


Lesenswert?

Spess53 wrote:

> Die Datenrichtung wird über das R/W-bit festgelegt. Müsste Bit0 vom
> Adressbyte sein. Also ein 'gemischter' Betrieb mit Aus- und Eingängen an
> einem IC ist nicht so richtig möglich.

Falsch. Die Pins besitzen einen schwachen Pullup und einen starken 
aktiven Pulldown. Folglich muss in einen Pin, der als Eingang benutzt 
werden soll, eine "1" reingeschrieben werden, um den aktiven Pulldown 
abzuschalten. Was immer an dem Eingang dranhängt zieht dann ggf. den Pin 
runter.

Folglich sind die Pins nicht in der Lage, signifikante Ströme zu 
liefern. Will man also LEDs schalten, dann müssen die an Vcc hängen, 
nicht an GND.

Und was man auch nicht tun darf: Daten lesen und ohne mitzudenken 
zurückschreiben. Denn dann wird aus einem Eingang, der an GND liegt, nun 
ein Ausgang an GND. Grad so wie auch bei 8051.

von Andreas K. (a-k)


Lesenswert?

Empfehlung: Datasheet Fig.9 und Abschnitt 7.3.

von Spess53 (Gast)


Lesenswert?

Hi

OK. Wieder etwas dazugelernt.

MfG Spess

von Heiko (Gast)


Lesenswert?

So nachdem ich jetzt alles soweit vorbereitet habe und mein i2C nicht so 
recht macht was ich will würde mich interessieren, wie es möglich ist 
den I2C Master (Mega32 mit TWI) und den Slave (PCF8574) zu testen.

Wie geht ihr da vor?
Anschließen und hoffen hab ich schon probiert, erfolg schlägt ungenügend 
zu buche :)

von norad (Gast)


Lesenswert?

Um von dem I2C PCF8574 daten einzulesesen gibt es zwei möglichkeiten:

1. Zyklisch Lesen --> Senden Adressbyte + R/W bit = 1
   Danach einfach 8bits einlesen ACK abfragen nicht vergessen

2. Interrupt gesteuert. d.h. sobald sich was am Port ändert wird ein
    interrupt ausgelöst.  Dann kannste wie unter 1 verfahren.

Es ist dir hoffentlich klar das die Hardwaremäßige Adresseinstellung mit 
der Softwärmäßigen Adresse übereinstimmen muss sonst geht garnichts. 
gell

von Heiko (Gast)


Lesenswert?

@norad:
ja das mit der adresseinstellung ist mir schon klar :)

mich würde aber eher noch interessieren wenn ich meine i2C lib von peter 
fleury hernehme und die TWI verwende ob der Master dann auch das macht 
was ich will.
Wie könnte ich dies testen, denn wenn der nix gescheites sendet dann 
nützt mir der beste PCF8574 nix g

von norad (Gast)


Lesenswert?

Tut mir leid Heiko! Aber Hardware TWI hab ich noch nie benutzt da ich 
haupsächlich mit 8051er arbeite und es dort Softwarmäßig die I2C-Bus 
geschichte realisiert habe.

Ich kenne  die Lib von Peter Fleury jetzt nicht aber ich denke das er in 
seiner lib oder Readmedatei beschrieben hat wie man so ein Baustein
anspricht.

Lese und schreib Routinen werden doch vorhanden sein.

Ich meine Du bräuchtest doch nur die die Adresse des Baustein senden und 
danach die Daten. Den Rest müsste doch das Hardware TWI machen.

von Andreas K. (a-k)


Lesenswert?

Wie wär's mit der Demo von Atmel (AVR315)?

von Falk B. (falk)


Lesenswert?

[[Port-Expander PCF8574]]

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.