Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > > > > Hallo. > > > > > > > > Ist es moeglich die I2C-Schnittstelle irgendwie zu beschleunigen? > > > > > > > > Ich möchte eine grosse Haussteuerung mit 16 I2C-Modulen machen. > > > > D.h. pollen von 16 Input-Ports und 16 Output-Ports, weshalb ich grausame Reaktionszeiten befuerchte. > > > > Meine Busleitung is insgesamt nur ca 2 Meter lang, und die I2C-Chips sollten ja normalerweise schnell genug sein. > > > > > > > > MfG, > > > > Wurl > > > > > > Hallo. > > > > > > Es ist nicht notwendig die I2C Schnittstelle zu beschleunigen, > > > ich betreibe eine Haussteuerung mit insgesamt 18 MAX 7311 und insgesamt 20m Busleitung ohne Probleme. > > > > > > Dabei werden insgesamt 30 Taster per Polling abgefragt, die irgendwie an den MAX7311 hängen. > > > Auch Tasterabfragen wie "3x Drücken", also die einzelnen Betätigungen zu zählen, > > > ist ohne Probleme möglich. > > > Und dann ist es immer noch möglich, Aktoren zu steuern, die auch an dem BUS hängen. > > > Dazu kommen Dimmer, die langsam auf- und abdimmen. Das Auf- und Abdimmen wird ebenfalls > > > über den BUS abgewickelt, indem nacheinander bis zu 60 Helligkeitswerte an die Dimmer gesendet > > > werden. Erst beim Dimmen mehrerer Lampen gleichzeitig merkt man, dass es langsamer auf- bzw. abdimmt. > > > > > > Aber die Eingangsabfrage ist auch dann immer noch problemlos. > > > > > > > > > > > > Dank für die Antwort. > > > > Bei mir sollen es bis zu 112 (14x8) digitale Eingänge (Taster, Bewegungsmelder etc.) sein. > > Gut die Hälfte davon mit Auswertung von Lang-Halten und Mehrfach-Druck. > > (Das benötige ich für 12 Jalousien, 6 Dimmer, etc. um sie mit nur je 1 Taste angenehm zu steuern.) > > Insgesamt gibt es auch bis zu 112 digitale Ausgänge zu verwalten. > > Daneben sind noch 48 Analogkanäle abzutasten (braucht aber blos einer alle zwei Zyklen zu sein). > > > > Ich habe schon Code gehackt für die Tasterauswertung, und für die Jalousiesteuerung. > > (Vielleicht schaffe ich auch eine Drag&Drop Funktion ;-) > > > > Den system.timer() möchte ich verwenden um mich darauf zu synchronisieren (warten auf bit7 und höher). > > Die ganze Schleife soll also möglichst im festen Raster von 128ms ablaufen. > > (Alle Eingänge pollen, Auswertung, und alle Ausgänge aktualisieren.) > > > > Leider ist noch nichts verdrahtet, und ich muss auch noch ein wenig fertig programmieren. > > Aber so ein Gefühl für die zu Erwartende Performance (Reaktionszeiten) wäre nicht schlecht. > > > > MfG, > > Ewald > > Hallo Ewald, ich habe das ähnlich abgewickelt, aber ohne feste Zeiten. > Bei mir gibt es erstmal eine Initialisierung um alle angeschlossenen Eingänge zu erfassen. > Danach läuft ein Thread, der alle Eingänge einliest und alle aktiven Eingänge in einem Array A abgelegt. > Im zweiten Durchlauf werden wieder alle Eingänge erfasst, aber nur noch die neu aktiven in einem > Array B abgelegt. Im dritten Durchlauf werden alle neu aktiven Eingänge wieder in Array A abgelegt usw... > > Während Array A beschrieben wird, liest ein zweiter Thread Array B aus und startet entweder weitere > Treads oder einfache Funktionen. > > Das Ganze ist gegeneinander verriegelt, Lesezyklus B kann erst starten wenn Array B komplett > ausgelesen ist und umgekehrt. > > In der Praxis gibt es dabei überhaupt gar keine Probleme bei dem Einlesen der Eingänge. Das ist > superperformant, und man hat das Gefühl einer instantanen Reaktion. Auch bei ca. 60 Eingängen. > > >