Re: I2C Capture funktioniert sicher? Kategorie: I²C-Bus (von André H. - 1.01.2009 20:37) | ||
Als Antwort auf I2C Capture funktioniert sicher? von Detlef - 17.12.2008 21:02 | ||
| ||
Hallo Detlef, Rene, Jörg, Joerg, Icebear, Probleme beim Multithreading mit dem I²C-Capture sind mir nicht bekannt. Auch ich greife in unterschiedlichen Projekten aus vielen Threads auf den I²C-Bus zu. (teilw. über 10 zugreifende Threads) Das I²C-Capture ist identisch mit den Capture des Moduls cap.c2. Daran kann es nicht liegen. Es wäre aber denkbar, da� irgendeine Funktion das I²C-Capture nicht oder nicht korrekt nutzt. Ich möchte hier nicht ausschlie�en, da� in einer Funktion der Module sich ein Fehler eingeschlichen hat. Es reicht schon, da� an einer Stelle versehentlich das I²C-Capture zufrüh mit i2c.stop() gelöst wird, als diese mit i2c.cstop() zu halten. Möglich wäre auch eine ungecapturete I²C-Bus-Routine, die erst ab einem bestimmten "Zugriffsmuster" auffällt. Es kann aber auch hardwarebedingt sein, wenn der Bus grenzwertig betrieben, da� es am Bus vereinzelt zu Störungen kommt. (z.B. zu viele Slaves pro Bussegment bzw. ungünstiges Verhältnis Anzahl/Länge) Dies kann dazu führen, da� ab einer bestimmten Busauslastung Störungen entstehen. Die Analyse ist dann natürlich schwierig. Wichtig ist auf jeden Fall mögliche Busfehler weitgehenst abzufangen. Das fängt damit an, die Rückgabewerte der Funktionen auszuwerten, ob Slaves ansprechbar sind. Ein zweiter Schritt kann gerade beim Auslesen sein, die Abfrage doppelt bzw. mehrfach auszuführen, um die eingelesenen Daten zu verifizieren. Bei Ausgängen, sollte im zweifelsfall zurückgelesen werden, um falsche Daten korrigieren zu können, bevor das Relais reagiert. Man mu� sich immer vor Augen halten, da� es beim I²C-Bus keinen Mechanismus gibt, um falsche Daten auszuschlie�en. (z.B. duch Prüfsummen) MfG André H. > > Hat jemand von Euch schon den I2C exessiv in mehreren Threads verwendet? > > Ich habe folgendes Problem. Ich habe eine Haussteuerung mit ca. 80 Eingängen, > ca. 80 Digitalen Ausgängen und 24 Dimmern aufgebaut. Dazu habe ich im wesentlichen 20 MAX7311 > verwendet.Von der Logik her gibt es mehrere Threads, einen, der zyklisch alle Eingänge abfragt, einen, > der direkte Ausgänge steuert und einen, der Dimmer soft an un ab dimmt. Funktioniert soweit > einwandfrei, allerdings, sobald nur noch ein Thread dazukommt, der auch auf den I2C zugreift, > fängt das ganze System zu spinnen an. > (Im Schlafzimmer dimmt das Licht runter, und unten im WOZI fahren plötzlich Jalousien los) > Mein Verdacht, die Captures (cstart, stop) funktionieren > irgendwie nicht. Fehler in der Software kann ich nicht finden, jede Komponente für sich funktioniert, > nur als System zusammen gehts den Bach runter. > > Hat irgendjemand ähnliche Erfahrungen gemacht? > > Viele Grü�e > > Detlef Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: Re: I2C Capture funktioniert sicher? (von Detlef - 10.01.2009 21:08) Re: I2C Capture funktioniert sicher? (von Joerg C. - 10.01.2009 23:58) Re: I2C Capture funktioniert sicher? (von Detlef - 11.01.2009 8:58) |