Re: pcf8574 Kategorie: I²C-Bus (von Ralf Metzner - 12.03.2008 8:52) | ||
Als Antwort auf Re: pcf8574 von Migi - 11.03.2008 19:53 | ||
| ||
Hallo MiGi, ich habe gestern noch einen Leistungstreiber an das längste Ende des I2C-Busses gesteckt, dadurch sind die Störungen seltener geworden. Ich habe jetzt nur noch selten einen Störimpuls, manchmal ist 5-10 Minuten Ruhe. Ich werde heute noch den Schirm der I2C-Leitung mit einem Y2-Kondensator (Tipp von Martin/nitraM:-) an GND anschliessen. Das mit den Pull-ups werde ich auch testen, berichte dann morgen darüber. In "MSR mit cc2" steht man kann auch noch je einen 330 Ohm Widerstand in Reihe zu SCL und SDA legen, um kurze Störimpulse zu dämpfen. Mein Bus sieht so aus c-control----->Leitungstreiber--(30cm)-->pcf8574--(30cm)--->Tastaturmodul(8574)--(30cm) --->pcf8574--(30cm)--->DS1631---(100cm)---->Leitungstreiber-----DS1631 Also c-control, direkt angeschlossener Leitungstreiber, dann 30cm Kabel, dann ein Conrad pcf8574 (19 88 48), wieder 30cm Kabel und dann die Tastatur von Conrad(19 83 56) mit zusätzlich angelötetem Interupt usw. Die DS1631 sind Thermometer von Conrad (19 82 98) Laut Conrad kann man nicht genug Leitungstreiber einsetzen... Originatton Conrad: I²C-Leitungstreiber-Modul Dieses Modul ist ein aktives Pull-Up-Modul und sorgt bei langen Leitungslängen mit hohen kapazitiven Lasten für steile Signalflanken auf den Busleitungen. Mit dem Leitungstreiber-Modul wird die Anstiegszeit unter 1 µs, bei 200 pF Bus Kapazität gehalten. Bei grö�eren Bus-Kapazitäten (oder gro�en Leitungslängen) können einfach mehrere Module parallel betrieben werden. Da alle Anschlüsse (auch TXD/RXD) parallel durchverdrahtet sind, kann das Modul ebenso als �bergangsadapter vom Schnittstellen- Steckverbinder auf Anschlussklemmen (1 mm²) benutzt werden. Ich probiere weiter und berichte...... Gru� Ralf > Hallo Ralf, > > den Leitungstreiber kannte ich bisher nicht. Ich habe ihn mir angesehen und verstehe die Anleitung so, > dass der Leitungstreiber den Pull-Up-Widerstand ersetzt. > Das hei�t, der Leitungstreiber ist sozusagen ein dynamischer Widerstand, der seinen Wert den > Anforderungen entsprechend verändert. Hast du ein ausgedehntes I2C-Netz mit vielen Teilnehmern, > mu� der Pull-Up-Widerstand einen kleinen Wert haben, damit die Signale die erforderliche Qualität > aufweisen. Die Leitungskapazitäten und die Eingangskapazität eines Teilnehmers sorgt nämlich > für ein verschleifen der Signalflanken. Diesem Effekt versucht man nun mit dem Modul entgegen zu > wirken. > Allerdings behaupte ich, dass deine Probleme durch genau dieses Modul verursacht werden. > Wenn der sogenannte Leitungstreiber, der eigentlich gar keiner ist, den Pull-Up-Widerstand sehr klein > macht, sind die Busteilnehmer nicht mehr in der Lage den daraus resultierenden Strom gegen Masse > flie�en zu lassen um die Informationen zu übertragen. > Die bei dir auftretenden Effekte sind auch logisch. Durch intensiven Signalaustausch werden die > Bausteine überlastet, erwärmen sich und sind dann nicht mehr in der Lage fehlerfrei die Daten zu übertragen. > > Wenn du mich fragst, ich würde das sogenannte Treibermodul erst einmal ausbauen, dieses durch > 1KOhm-Widerstände (das ist die Grenze nach unten) von SCA und SCL jeweils auf 5V ersetzen. > Dann schaust du, ob es überhaupt funktioniert, und wenn Ja, ob die Qualität besser geworden ist. > Wenn man lange Leitungslängen zu überbrücken hat ist der richtige Weg, an jedem Leitungsende ein > Leitungstreiber zu platzieren. Der Sender und Empfänger ist dann jeweils am "Lokalbus" angeschlossen, > die Leitung selbst ist der "Fernbus". > Fernbus: Pull-Up ist ca. 330 Ohm > Lokalbus: Pull-Up ist > 1kOhm > > So, nun ausprobieren und Status melden. > > Viel Erfolg > MiGi > > > > Hallo, > > ich habe das kleine Treibermodul von Conrad 19 82 80, sonst keine Pull-ups (???), > > müssen da welche rein? > > > > Es hat sich mittlerweile schon einiges ergeben, Martin hat mir hier intensiv weitergeholfen. > > Ich habe: > > > > - Am Conrad Tastaturmodul die fehlende Interuptleitung angelötet. und bis zur c-control geführt. > > > > - Software so geändert, das die Module definiert und in der richtigen Reihenfolge initialisiert und > > angesprochen werden. > > > > - I2C-Verteiler von Conrad (19 11 93) rausgeschmissen, neue Busleitung gelötet (ca.2 Meter). > > (Werde ich allerdings nochmal machen, und die Adernpaare so nutzen, das immer je eine > > GND-Leitung mit SCL, SDA, Interupt und 5V in einem Paar liegt, was im Moment nicht der Fall ist) > > > > Jetzt läuft die Sache soweit ganz gut, bis auf gelegentliche Störungen auf dem I2C-Bus, die sich > > folgendermassen äu�ern: > > > > Die Thermometer zeigen kurz falsche Werte an (teilweise negativ), belegte Eingänge auf dem > > PCF-Portexpander "verschwinden" kurz. Die Störungen dauern nur einen Impuls und treten im > > Abstand von 10sec bis 30sec auf. Im Schaltschrank ist ein Frequenzumrichter, der natürlich > > schon ordentlich Störungen verursachen kann. > > > > Ich werde noch versuchen: > > > > - Pull-up-Widerstände an die Conrad-Tastatur anlöten. Verwende externe Taster, die mit relativ > > langen(30 cm) Leitungen an das Modul gelötet sind. > > > > - Unter Umständen Tastaturmodul ersetzen durch PCF-Portexpander (Acht Eingänge für 8 Tasten). > > > > > > Gru� > > Ralf > > > > > > > > > > > > > > > > > Hallo Ralf, > > > > > > welche Werte haben die Pull-Up-Widerstände an SDA und SCL vom I2C-Bus? > > > > > > Gru� > > > MiGi > > > > > > > > > > Hallo, > > > > erst mal ein gro�es Lob an dieses Forum und diese Seite. Ich konnte alle Informationen die ich zum > > > > programmieren brauchte hier finden. Jetzt habe ich aber ein Problem und komme nicht dahinter. > > > > Ich habe am I2C-Bus 2 Thermometer, 1 PCF-Keyboard und 2 pcf-portexpander (nicht die A-Version, > > > > einen als Eingänge und einen als Ausgänge). Es hat zuerst alles funktioniert wie gewünscht, jedoch > > > > gab es dann immer häufiger Fehlmeldungen der Eingangskarte, die Eingänge als gesetzt übergab, > > > > obwohl sie definitiv nicht belegt waren. mit entfernen des als Ausgang verwendeten Portexpanders > > > > verschwanden die Probleme zunächst. Nach mehreren Versuchen bekomme ich jetzt die Portexpander > > > > nur noch sporadisch zum laufen, teilweise aber erst nach längerem Ausschalten der C-Control. Die > > > > PCF-Tastatur funktioniert auch nicht mehr. Das alles, obwohl ich alles in den Zustand zurückversetzt > > > > habe in dem alles funktioniert hat. Was immer geht sind die Thermometer (DS1631). Als Adressen habe > > > > ich 4 für die Tastatur, 6 für die Eingänge und 7 für die Ausgänge. Treibermodul für den I2C-Bus ist auch > > > > eingebaut. Wie werden die Portexpander richtig als Ein bzw. Ausgang initialisiert? Was genau bedeutet > > > > pcf.on() bzw.pcf.off()? Die Eingänge sind einfache Schalter und die Ausgänge sollen einen Frequenzum- > > > > richter steuern. Falls jemand eine Idee hat wo hier der Fehler liegen könnte bitte ich dringend um Hilfe. > > > > > > > > Vielen Dank. | ||
Antwort schreiben Antworten: Re: pcf8574 (von Migi - 12.03.2008 9:34) Re: pcf8574 (von nitraM - 12.03.2008 11:58) Re: pcf8574 (von Migi - 12.03.2008 19:05) Re: pcf8574 (von nitraM - 12.03.2008 19:48) Re: pcf8574 (von Migi - 13.03.2008 10:20) Re: pcf8574 (von Ralf Metzner - 12.03.2008 10:37) Re: pcf8574 (von Migi - 12.03.2008 19:11) Re: pcf8574 (von Migi - 12.03.2008 19:11) Re: pcf8574 (von Ralf Metzner - 13.03.2008 8:11) Re: pcf8574 (von Ralf Metzner - 14.03.2008 10:39) |