Re: kurze Eingaben am Digitalport I²C erfassen Kategorie: I²C-Bus (von Detlef - 2.07.2009 21:09) | ||
Als Antwort auf Re: kurze Eingaben am Digitalport I²C erfassen von reneforster - 2.07.2009 20:18 | ||
| ||
> Hallo Detlef, > > danke erstmal für deinen Erfahrungsbericht. > > > ich habe alle Eingänge über I²C realisiert.Und das sind ganz locker alle Schalter im Haus und > > div. Sensoren. (ca. 80 Eingänge). Diese werden reihum permanent über einen extra Thread abgefragt. > > Das funktioniert instantan, es sind sogar Schalter dabei, die ein Schieberegister befüllen, d.h. es ist > > notwendig einen Schalter mehrfach nacheinander zu betätigen, und es geht kein Impuls dabei verloren. > > Das heist, du fragst alle möglichen Eingänge in einer Schleife ab. Wieviel Zeit lässt Du zwischen den > einzelnen Abfragen? Also Frage Eingang 1 ab, warte 10ms, Frage Eingang 2 ab. Ja, ich frage alle Eingänge in einer Schleife ab. Wartezeiten gibts da gar nicht. Ich habe sogenannte "Module" zusammengelötet, in denen jeweils 1-3 "Max7311" verbaut sind. Diese Module haben konfigurierbar 3-12 Eingänge. Für diese "Module" habe ich "Treiber" geschrieben, also Funktionen zum Initialiseren, zum Auslesen und zum Beschreiben. Beim Hochfahren des Systems wird versucht alle theoretisch möglichen Module zu initialisieren, die erfolgreich Initialisierten stehen in einer Variable. Diese Variable ist der Parameter für den Thread zum Auslesen der vorhandenen Module. Hier wird dann reihum der Treiber zum Auslesen mit den Adressen der vorhandenenen Module ausgeführt wobei jedesmal ein INT zurückkommt. Wenn in diesem INT was steht, wird ausgelesen, welches Bit "high" ist. Aus der Reihenfolge, welches Modul, welches Bit ergibt sich welcher Schalter aktiv ist. Dieses wird in ein Array geschrieben. Dieses Array akzeptiert bis zu 20 aktive Schalter gleichzeitig. Werden es mehr wird ignoriert, ist aber noch nie vorgekommen. > > > > Die Schalter im Haus schalten alle N auf die Eingänge. Damit ein Stromflu� zu stande kommt, > > liegt im Zählerschrank, wo auch die Station eingebaut ist, ein "modifziertes" Netzteil, mit einer Brücke > > zwischen Netzteilmasse und N. Flie�t Strom über diese Brücke, gibts ein Signal, da� die Station > > nutzt, um alle Schalter abzufragen. > > Das habe ich jetzt ehrlich gesagt nicht verstanden. Ein modifiziertes Interrupsignal? Warum dann nicht > das Interrupsignal von den I²C Porterweiterungen nutzen? Welche Porterweiterung hast Du im Einsatz? Beim Zusammenlöten meiner Module habe ich das Interruptsignal nicht mit rausgeführt. Au�erdem hatte ich teilweise nur 4-adrige Leitungen verlegt, soda� das mit dem Interuptsignal sowieso nicht geklappt hätte. Klar, kann man das Interuptsignal der Proterweiterungen nutzen. Die hab ich aber ja nicht im Einsatz. > > > > > Es gibt auch keine Performanceprobleme, wenn die Station ohne Interuptsignal immer alle Eingänge > > reihum im Dauerlauf abfragt. So ist es nämlich jetzt, wo ich Bewegungsmelder eingebaut habe, die > > nicht über N schalten und auch abgefragt werden sollen.... > > Wie gesagt, hier wäre mal deine Umlaufzeit interresant. Weil Abfragen geht ja im Programm nur nacheinander. Also die hab ich nie gemessen, aber ich habe Schalter, die ich bestimmt 4x die Sekunde betätige, und alle Impulse werden problemlos von der Station verarbeitet. Man kann beim besten Willen keine Verzögerung feststellen. Es ist sogar so, da� ich viele Dimmer im Einsatz habe, die 64 Helligkeits stufen können. Wenn ich hier von 0 auf volle Helligkeit aufziehe, mu� der Baustein 64 mal über I²C angesprochen werden. Im Wohnzimmer, wo man "Lichtstimmungen" einstellen kann, werden sogar vier Dimmer gleichzeitig, also hunderte I²C Pakete in wenigen Sekunden verschickt, und der Lesethread hat immer noch keine Probleme. Zugegeben, wenn man in einem weiteren Zimmer zeitgleich weitere Dimmer aufzieht, merkt man, wenn man drauf achtet, da� das Hochdimmen etwas langsamer wird... Also der I²C ist durch diskrete, manuell erzeugte Schaltersignale sicher nicht kleinzukriegen. Da mü�ten dann wirklich wirklich maschinell erzeugte, höherfrequente Signale her. Viele Grü�e Detlef > > > > Rene | ||
Antwort schreiben Antworten: Re: kurze Eingaben am Digitalport I²C erfassen (von reneforster - 2.07.2009 21:30) Re: kurze Eingaben am Digitalport I²C erfassen (von Detlef - 2.07.2009 21:54) Re: kurze Eingaben am Digitalport I²C erfassen (von reneforster - 3.07.2009 19:40) |