Re: gepufferter I2C-Bus Kategorie: I²C-Bus (von Christian Jost - 25.12.2005 10:49) | ||
Als Antwort auf gepufferter I2C-Bus von Erich H. Nolting - 5.12.2005 21:55 | ||
| ||
Hallo Erich Ich hattes das Problem auch mal. Damals habe ich noch keine C-Control verwendet sondern der I2C Master war auf einer PC-Interface Karte. Ich denke nur über kleinere Widerstände lässt sich das Problem nicht lösen. Der I2C-Bus ist nicht für grosse Distanzen gemacht und kann keine �bertragungsfehler entdecken oder korrigieren. Meine Anwendung war/ist nicht sehr zeitkritisch. Ich hatte eigentlich nur folgende Komponenten angeschlossen: - Schalter/Taster - Anzeigeelemente (Led's) - Relais Ich habe es damals wie folgt gelöst: Die Empfangsroutine für den I2C-Bus hat die gleichen Daten mehrfach gelesen. Erst wenn min. zwei nacheinanderfolgende Bytes den gleichen Wert aufwiesen, wurden sie als gültige Daten akzeptiert. Beim Senden war es etwas komplizierter: Zuerst wurde das gewünschte Byte an den I2C Baustein übertragen und danach über die Empfangsroutine gleich wieder eingelesen. Falls der gesendete Wert nicht dem empfangenen Wert entsprach, so wurde das Byte nochmals an den Baustein übertragen. Falls nötig wurde dies mehrfach wiederholt. Danach hatte ich nie mehr Probleme mit der �bertragung. Viele Relais sind genügend träge, so dass man problemlos ein paar falsche Bits korrigieren kann, ohne dass ein angeschlossenes Gerät bereits darauf reagiert. Ok, das Verfahren lässt sich sicher noch optimieren und ein 100%-iger Schutz ist es auch nicht. Meine Software hat damals gezählt wie oft solche Fehler auftreten. Während ca. 2-3 Stunden (es handelt sich da um eine Theatersaalsteuerung) gab es so um die 2-10 �bertragungsfehler, die etwas ungewolltes (z.B. Vorhang schliessen) bewirkt hätten. Inzwischen habe ich es aber anders gelöst. die I2C Komponenten sind sehr nahe an der CControl (< 1m). Grössere Strecken überbrücke ich mit dem CAN-Bus. Dazu gibt es 3 Schaltschränke mit je einer C-Control-Station und sehr viel I/O über I2C. Meine erste Lösung funktioniert gut für I/O Bausteine aber für Speicher, D/A-Wandler und viele andere Bausteine sowie zeitkritische Anwendungen klappt das nicht. Mich würde es interessieren, was andere so für Erfahrungen mit dem I2C-Bus gemacht haben? Gruss Christian | ||
Antwort schreiben Antworten: |