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
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.
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
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
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
>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.
OK das hab ich dann verstanden und muss erkennen dass die steuerung einzelner Bits nicht möglich ist. Entweder byte schreiben oder eben lesen
Das DIng ist eigentlich nichts anderes als ein bidirektionales Schieberegister mit I²C-Schnittstelle...
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.
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 :)
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
@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
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.
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.