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 Bernd, > > Zuerst: Bitte formatiere Quellcode mit dem code-Tag, wie oberhalb des Texteingabefelds > beschrieben, und nicht mit pre-Tags. Der Code ist dann besser lesbar. > (Außerdem wird dieser dann auch nach C2-Syntax formatiert.) > > > Nun die Fragen: > > Gibt es Schwierigkeiten mit den Werten in "Data"? > > Nein, es sollte keine Schwierigkeiten geben. > Im Bytearrays pcf.Data[] stehen die Portzustände der PCF8574. > Dieses Arrays wird nur benutzt, wenn einzelne oder mehrere Ports > vom PCF8574 als Ausgang benutzt werden. > Im diesen Array müssen die entsprechenden Bits, welche zu den Ports gehören > auf high stehen, die als Eingang genutzt werden. > > > Ist dieser Weg überhaupt der richtige? > > Der Code sollte funzen. > Nur was Du mit dem <code>s = s + ChgeData[i];</code> bezwecken willst, > verstehe ich nicht ganz. > Jedoch solltest Du bei den PCF8574 mit einer Interruptleitung arbeiten, > um den Bus nicht unnötig zu belasten. > Du fasst einfach alle Interruptausgänge der PCF8574 zusammen, bei denen > einzelne oder alle Ports als Eingang dienen. > Diese Interruptleitung führst Du dann zu einem freiem I/O der CC2 und hängst > noch einen 10k Pull-Up-Widerstand zwischen dem I/O und der CC2. > Solange der Port einen high-Pegel hat, ist auch nichts an den Eingängen > der PCF8574 passiert. Geht die Int-Leitung an dem Port auf Low, so gab es > eine Änderung an einem der PCF8574. > Und, um dies in Deine Funktion einzubinden: > > <code>function ReadAll() returns int > {byte i, n; int s; > if ports.get(IntPort) return 0; // Wenn kein Interrupt, Funktion verlassen > // Lesen sämtlicher Bausteine (PCFaddr) bis Interrupt beendet > s = 0; > > for i = 0 ... 15 > { > if PCFaddr and (1 shl i) != 0 > { > i2c.cstart(AddrR[i]); > n = i2c.readlast(); > i2c.stop(); > // Berechnung von ChgeData > // danach speichern von ReadData > ChgeData[i] = ReadData[i] xor n; > s = s + ChgeData[i]; > ReadData[i] = n; > } > if ports.get(IntPort) break; // Wenn Interrupt beendet, Schleife verlassen > } > return s; > }</code> > > > MfG André H.