mikrocontroller.net

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


Autor: Heiko (Gast)
Datum:

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

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

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

Autor: Heiko (Gast)
Datum:

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

Autor: Spess53 (Gast)
Datum:

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

Autor: Schoasch (Gast)
Datum:

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

Autor: Rahul Der trollige (rahul)
Datum:

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

Autor: Heiko (Gast)
Datum:

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

Autor: Rahul Der trollige (rahul)
Datum:

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

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

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

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

Bewertung
0 lesenswert
nicht lesenswert
Empfehlung: Datasheet Fig.9 und Abschnitt 7.3.

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

OK. Wieder etwas dazugelernt.

MfG Spess

Autor: Heiko (Gast)
Datum:

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

Autor: norad (Gast)
Datum:

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

Autor: Heiko (Gast)
Datum:

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

Autor: norad (Gast)
Datum:

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

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

Bewertung
0 lesenswert
nicht lesenswert
Wie wär's mit der Demo von Atmel (AVR315)?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[[Port-Expander PCF8574]]

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.