Re: Auswertung mehrere I2C-CNT2-HS Module (#1828) Kategorie: Programmierung (von Dirk - 15.08.2012 13:57) | |
Als Antwort auf Re: Auswertung mehrere I2C-CNT2-HS Module (#1828) von André H. - 8.08.2012 10:20
| |
Vielen Dank André, der Hinweis nur solange abzufragen, wie die INT-Leitung den Status "low" hat war es, für den ich den "Hilfe-Schubs" brauchte. Eigentlich hätte ich selber drauf kommen müssen, da ja heute bereits die 10x Eingangsmodule bei mir schon auf 3 INT-Leitungen aufgeteilt sind. Hier wird auch bei der Abfrage des Verursachers die weitere Suche beendet. Allerdings ist hier das Kriterium ein Zwischenspeicher der Portzustände in einer globalen Variablen, welche gegengeprüft wird, und nicht, ob sich der Zustand der INT-Leitung geändert (auf "high") gegangen ist. Danke für den "Hilfe-Schubs". mfg Dirk > Hallo Dirk, > > > Zum Zwecke der PV-Anlagen-�berwachung würde ich nun gerne die diversen S0-Impulse der neuen > > Smart-Zähler (PV-Erzeugungszähler und Zweiweg-Zähler) als auch der zusätzlich installierten > > elektronischen 230V-Wechselstromzähler auswerten wollen. > > Insgesamt sind es dann mittlerweile 10x S0-Impulse, welche ich per CC2-Station auswerten möchte. > > > > Wie würdet Ihr vorgehen unter Nutzung welcher Hardware, um die besagten 10 S0-Impuls-Geber > > auszuwerten, so dass die Belastung für den I2C-Bus als auch der CC2-Station so gering wie möglich > > ist. > > Es ist auszugehen, da� die Impulse eher selten eintreffen. Bei hher Laste evtl. jede Sekunde. > Ansonsten kann es schon, je nach Zähler, bis zu einer Minute dauern, bis ein Impuls erzeugt wird. > Der I²C-Bus pakt dis auch bei 10 Zählern ohne Probleme. > > > > Bei den I2C-CNT2-Modulen existiert ein INT-Ausgang, welcher widerum theoretisch > > auf der CC2-Station an den 8 digitalen Ports P0 ... P7 abgefragt werden könnte, das ist bekannt. > > Allerdings habe ich die Herausforderung, dass die Impulsintervalle bei den versch. S0-Gebern > > extrem auseinander liegen können => jedesmal, wenn einer der 10 CNT-Eingang über INT einen > > Zählimpuls anzeigen würde, werden alle 10x CNT-Zähler abgefragt, halte ich nicht gerade > > für besonders effektiv. > > Wenn Du alle INT-Ausgänge an einen Eingang der CC2 legst, mu�t Du nicht unbedingt > alle Zählermodule abfragen. Du frägst nur solange ab, wie der Interrupt besteht. D.h. Du prüfst > nach jedem Abfragen eines Zählermoduls, ob die INT-Leitung noch low ist. Ist sie es nicht, brichst > Du das Abragen der weiteren Counter ab. > Es ist hier hilfreich, die Zähler zuerst abzufragen, bei denen es wahrscheinlich ist, da� öfter > Impulse eintreffen. Der Zähler, bei dem am seltensten ein Impuls eintrifft, wird beim Interrupt > zum Schlu� abgefragt. So bleibt die Buslast relativ gering. > > > Klar würde das funktionieren, allerdings hätte ich hier von Hause aus eine Effektivität > > von gerade 10%. Jedes einzelne I2C-CNT2-Modul per INT-Signal einzeln auszuwerten funktioniert > > aufgrund der zukünftigen Doppelbelegung (swcom an P1 und P2) und der bereits > > etablierten Auswertung der I2C-Eingangsmodule für die diversen Taster auf P4 bis P7 > > rein technisch nicht. > > Man kann natürlich auch mit mehreren Interruptleitungen arbeiten. Aber bei der geringen Buslast > ist das nicht notwendig. > �brigens kann man die AD-Ports auch als digitale Eingänge nutzen. Das wäre dann P5. > inline function get_P5() returns byte > { > inline vmcodes.VM_LOAD_ABSOLUTE_BYTE; > inline 0xFFA2; > } > > Diese Funktion gibt das Bitmuster der 8 AD-Ports als Digitalports wieder. > Es mu� aber u.U. erst über as P5DIDIS-Register der Portpin mit dem Digital-Input-Stage > verbunden werden. Dies ginge mit folgender Funktion: > inline function set_P5DIDIS(int data) > { > inline vmcodes.VM_STORE_ABSOLUTE_INT; > inline 0xFFA4; > } > > Nähere Infos dazu im User-Manual zum C164CI-Controller Kapitel 7.8. > > MfG André H. | |
Antwort schreiben Antworten: |