Hi,
Ich bin der Peter Fuhrmann aus Gelsenkirchen, und ich hab mich grade bei eurer Mailingliste angemeldet. Ich bin der "Chef Elektroniker" bei dem Labor in Bochum. Jörg Bornschein hat mir die Tage erzählt, dass ihr irgendwelche Probleme mit nem langen I2C Bus hättet, und desswegen hab ich mich hier mal eingetragen. Ich hab auch vorhin versucht, euer Listen Archiv zu lesen, aber der Server meinte, ich hätte nicht die richtigen Zugangsrechte - naja. Auf dem What The Hack hab ich auch kurz mit einem von euch geredet, weiss aber nichtmehr, wer das war. Ich würd auch gern mal nen Blick in euren Schaltplan werfen, so wies für mich aussieht ist da noch was an Optimierungspotential drinn.
Schönes Projekt auf jeden Fall, wir müssen von den Teilen auf jeden Fall auch ein paar fürs Labor bauen, die gefallen mir ganz gut.
grüsse, Peter
Hi Peter,
* Peter Fuhrmann tixiv@gmx.net wrote:
Ich bin der Peter Fuhrmann aus Gelsenkirchen, und ich hab mich grade bei eurer Mailingliste angemeldet. Ich bin der "Chef Elektroniker" bei dem Labor in Bochum. Jörg Bornschein hat mir die Tage erzählt, dass ihr irgendwelche Probleme mit nem langen I2C Bus hättet, und desswegen hab ich mich hier mal eingetragen.
Cool. Das Problem ist, das die Rechtecksignale bei I2C und einem langen Kabel abgerundet werden (durch die Wirkung des Kabels als Kondensator).
Ausser den gesamten Bus langsamer machen (bei den fnordlichtern laeuft der grad mit ~7kHz), kann man da noch mehr tun vielleicht?
Ich hab auch vorhin versucht, euer Listen Archiv zu lesen, aber der Server meinte, ich hätte nicht die richtigen Zugangsrechte - naja.
Ich habs gefixt, die Archive sind unter https://continuity.koeln.ccc.de/pipermail/fnordlicht/ zugaenglich.
Auf dem What The Hack hab ich auch kurz mit einem von euch geredet, weiss aber nichtmehr, wer das war.
Kann sein, dass ich das war. =)
Ich würd auch gern mal nen Blick in euren Schaltplan werfen, so wies für mich aussieht ist da noch was an Optimierungspotential drinn.
Sehr gut moeglich, ich bin kein E-Techniker...
Schönes Projekt auf jeden Fall, wir müssen von den Teilen auf jeden Fall auch ein paar fürs Labor bauen, die gefallen mir ganz gut.
Danke!
- fd0
Cool. Das Problem ist, das die Rechtecksignale bei I2C und einem langen Kabel abgerundet werden (durch die Wirkung des Kabels als Kondensator).
Ausser den gesamten Bus langsamer machen (bei den fnordlichtern laeuft der grad mit ~7kHz), kann man da noch mehr tun vielleicht?
Tja, das Problem kenne ich. Bei I2C tritt das besonders gerne auf, weil in High richtung der gesammte Strom zum Umlöaden der Kable kapazität von dem Pullup Widerstand an den Leitungen aufgebracht werden muss. Was für Kabel verwendet ihr denn? Bei I2C ist das sehr schwierig zu lösen, da der Bus ja bidirektional ist. Wenn man sich aber nun darauf einliesse, den Bus unidirektional zu nutzen, dass heisst ein Master darf auf dem Bus sprechen, und alle fnrodlichter hören nur zu, dann könnte man einfach einen Treiber an der Masterseite nachschalten, der dann das Problem lösen sollte. Dann muss man sich nur überlegen, wie man das mit dem bei I2C üblichen ACK macht, das ja eigentlich von den slaves zurückgesendet werden sollte. Vielleicht könnte man das fehlende ACK ja einfach am Master ignorieren. Was ankommt kommt eben an, und was nicht das nicht.... Wenn ihr twisted pair Kabel verwendet, dann solltet ihr übrigens möglichst ein Adernpaar für GND und SCK, und ein weiteres für GND und SDA verwenden. Das veringert ein mögliches Nebensprechen zwischen den beiden Signalen.
Ich habs gefixt, die Archive sind unter https://continuity.koeln.ccc.de/pipermail/fnordlicht/ zugaenglich.
Ob Du es glaubst oder nicht, ich kann mich immer nochnicht anmelden. Welchen Nutzernamen und Passwort soll ich denn verwenden? Ich habs mit meiner Mailaddresse, und dem Passwort von der Listenanmeldung versucht.
Auf dem What The Hack hab ich auch kurz mit einem von euch geredet, weiss aber nichtmehr, wer das war.
Kann sein, dass ich das war. =)
An den Hängematten, Du hattest Dir grade ein Buch über car modding zugelegt.
cu tixiv
* Peter Fuhrmann tixiv@gmx.net wrote:
Ich habs gefixt, die Archive sind unter https://continuity.koeln.ccc.de/pipermail/fnordlicht/ zugaenglich.
Ob Du es glaubst oder nicht, ich kann mich immer nochnicht anmelden. Welchen Nutzernamen und Passwort soll ich denn verwenden? Ich habs mit meiner Mailaddresse, und dem Passwort von der Listenanmeldung versucht.
Achso, schau mal genau in das was in dem Fenster steht. ;)
Auf dem What The Hack hab ich auch kurz mit einem von euch geredet, weiss aber nichtmehr, wer das war.
Kann sein, dass ich das war. =)
An den Hängematten, Du hattest Dir grade ein Buch über car modding zugelegt.
Nop, das war definitiv nicht ich.
- fd0
Hey, Peter...
PF>Jörg Bornschein hat mir die Tage erzählt, dass ihr irgendwelche Probleme mit nem langen PF>I2C Bus hättet, und desswegen hab ich mich hier mal eingetragen. Das war wohl ich. Ich habe ein eigenes kleines Projekt - www.zefiro.de/projekte/wodo/moodcluster.html - das mit dem Fnordlicht einige Gemeinsamkeiten hat und daher dachte ich ich frage mal hier nach :)
Cool. Das Problem ist, das die Rechtecksignale bei I2C und einem langen Kabel abgerundet werden (durch die Wirkung des Kabels als Kondensator).
So sehe ich das auch. Ich bin allerdings selber ebenfalls absoluter Laie. Beispielsweise ist mir nicht klar ob es Sinn macht einen Abschlußwiderstand zu verwenden, um Reflexionen vorzubeugen, oder ob das kontraproduktiv wäre. Ob es reicht überall die Pins auf Pullup zu schalten oder ob man aktive Pullup Schaltkreise benötigt. Etc.
Ich kann höchstens googeln und hoffen etwas passendes zu finden. Oder hier fragen :)
http://www.esacademy.com/faq/i2c/general/i2chardw.htm Hier steht etwas über Signalqualität und aktive Pullups (leider nicht wo ich sie herkriegen kann)
PF> Tja, das Problem kenne ich. Bei I2C tritt das besonders gerne auf, weil in PF> High richtung der gesammte Strom zum Umlöaden der Kable kapazität von dem PF> Pullup Widerstand an den Leitungen aufgebracht werden muss. Was für Kabel PF> verwendet ihr denn? Ich verwende Cat5 Netzwerkkabel. Ich hatte mir eine Belegung überlegt die eine sternförmige Struktur erlaubt, indem ich SDA und SCL jeweils wieder zurückführe. Ich hatte dabei die beiden Leitungen in der Dose (auf der Platine) zusammengelötet und für SDA und SCL jeweils ein Kabelpaar verwendet, eine Ader hin, die andere Ader zurück. Ist das deutlich nachteiliger gegenüber einer Lösung mit Masse als zweite Ader?
Speziell wollte ich noch +5V und +12V Betriebsspannung übertragen. Die habe ich jeweils mit Masse auf die anderen beiden Pärchen verteilt.
http://www.mcc-us.com/i2cHowToUseIt1995.pdf Abschnitt 16.3 schlägt auch das Wiring Pattern mit SDA/GND, SCL/GND vor. Hab ich zu spät gefunden.
http://www.esacademy.com/faq/i2c/q_and_a/i2cqena.htm Ein paar interessante Fragen, z.B. I2C über Optokoppler, bidirektional
Ich fand auch etwas über 'Bus Multiplikatoren', also Bausteine die mehrere Stränge zu ermöglichen scheinen, jeweils mit eigenen 400pF Kapazität. Das wäre für eine Sternstruktur natürlich ideal. Leider weiß ich weder welchen Chip ich dort genau benötigen würde noch woher ich ihn beziehen kann (und nicht grade zu 10 Euro das Stück).
Insgesamt neige ich zu der Erkenntnis daß I2C für meine Anwendung - möglichst Sternverkabelung, einige Meter Kabellängen - nicht geeignet ist. Ich weiß nur noch nicht was ich als Alternative verwenden könnte. (CAN und RS485 wurden mir vorgeschlagen, beide benötigen separate Controller- und Treiberbausteine)
:Zefiro:
Hi,
* Zefiro trickser@gmx.net wrote:
Cool. Das Problem ist, das die Rechtecksignale bei I2C und einem langen Kabel abgerundet werden (durch die Wirkung des Kabels als Kondensator).
So sehe ich das auch. Ich bin allerdings selber ebenfalls absoluter Laie. Beispielsweise ist mir nicht klar ob es Sinn macht einen Abschlußwiderstand zu verwenden, um Reflexionen vorzubeugen, oder ob das kontraproduktiv wäre. Ob es reicht überall die Pins auf Pullup zu schalten oder ob man aktive Pullup Schaltkreise benötigt. Etc.
Mit welcher Frequenz taktest du deinen I2C-Bus?
- fd0
Hey, Alexander...
AN> Mit welcher Frequenz taktest du deinen I2C-Bus? Mit der Frequenz die die von mir verwendete Avrlib defaultmäßig verwendet, also den langsamen Modus mit 100KHz, wenn ich das richtig interpretiere.
Daß ich die Frequenz manuell auf noch langsamer setzen kann war mir nicht klar, d.h. hatte ich auch noch nicht probiert. Reicht es eigentlich dies für eines der am Bus befindlichen Geräte zu tun? d.h. den Master oder den (relevanten) Client? Afair kann ja jeder durch Low-Halten von SCL den Takt abbremsen.
Evtl. wäre ja sogar eine adaptive Anpassung möglich. In meinen Experimenten musste ich die AVRs jedoch eher regelmäßig resetten weil sie hängenblieben. Bzw. auf eine Übermittlung der Daten / Freigabe von SCL warteten oder sowas, sichtbar war halt nur daß sie auf nichts mehr reagierten. Würde vermutlich einige Änderungen am I2C-lib-code benötigen.
:Zefiro:
Hi,
* Zefiro trickser@gmx.net wrote:
AN> Mit welcher Frequenz taktest du deinen I2C-Bus? Mit der Frequenz die die von mir verwendete Avrlib defaultmäßig verwendet, also den langsamen Modus mit 100KHz, wenn ich das richtig interpretiere.
Ja, kannst du. Schau mal in das Datenblatt und such nach TWBR und TWSR (die prescaler bits).
Je langsamer das ganze ist, desto laenger kannst du das Kabel machen, weil die Abrundung der Kanten da dann nicht mehr so relevant ist (hab ich auch noch nicht so wirklich ausprobiert, mal schauen...)
- fd0