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 CC2User! > > Mein System: C-Control II, 2005/05/27, CC2 V3.1b, OSOPT V3.1 > Reglerboard V1.3 > Max7311.c2 V1.03 I2c.c2 V1.32 > > Ich habe für meine Haustechnik 2 x I2C Bus Porterweiterungen1816R und 3 x I2C-Bus > Transceiver 1824R zusammenbebaut und getestet. Beide I2C Bus Porterweiterungen verhalten > sich nicht wie erwartet. Ich habe zwei Testloops erstellt um Ein- und Ausgänge zu testen. > Es fehlen jeweils die Bits 3,4,5 und 11,12,13 beim Inputtest sowie beim Outputtest. Nur der > Outputtest, wo ich alle Bits einzeln Ein- und Ausschalte, funktioniert. Den 1816R hatte ich > mit MAX7311 aufgelötet bestellt, weil ich das Risiko nicht eingehen wollte, hier einen Fehler > einzubauen. Das Verhalten mit ist mit und ohne Transceiver gleich. > Da beide 1816R den gleichen Fehler zeigen vermute ich den Fehler im Programm. > > Über einen Hinweis würde ich mich freuen! Danke! > > Gruß > > Friedhelm > > Hier die Testloops – ich aktiviere mal die eine und mal die andere loop. > > // Outputttest > // 11.04.2010 > //----------- > thread main > //----------- > { > //----------- > //Init MAX7311 > //----------- > string s; > > rblcd.init(); > rblcd.clear(); > rblcd.setLight(1); > > rblcd.goto(1,0); > s="Max7311 Outputttest"; > rblcd.print(s); > sleep 1000; > > max7311.setDDRw(16,0000000000000000); //set Datenrichtung: alle Ports als Ausgang festlegen -ok- > //max7311.setDDRb(16,0,0); //set Datenrichtung: Ports 0-7 als Ausgang festlegen -ok- > //max7311.setDDRb(16,1,0); //set Datenrichtung: Ports 8-15 als Ausgang festlegen -ok- > //max7311.setDDR(16,0,0); //set Datenrichtung: Port "0" als Ausgang festlegen > 1=Eingang 0=Ausgang > //max7311.setw(16,1111111111111111); //setze alle Ports "1" > //max7311.setw(16,0000000000000000); //setze alle Ports "0" > > loop > { > max7311.setw(16,1111111111111111); //Baustein 16, Port 0, einschalten - Fehler > je 3 Bits 3,4,5 und 11,12,13 fehlen..... > sleep 500; > max7311.setw(16,0000000000000000); //Baustein 16, Port 0, ausschalten - Fehler > je 3 Bits 3,4,5 und 11,12,13 fehlen..... > sleep 500; > /* > max7311.setb(16,0,11111111); //Baustein 16, Byte 0, einschalten - Fehler > je 3 Bits 3,4,5 und 11,12,13 fehlen..... > sleep 500; > max7311.setb(16,0,00000000); //Baustein 16, Byte 0, ausschalten - Fehler > je 3 Bits 3,4,5 und 11,12,13 fehlen..... > sleep 500; > max7311.setb(16,1,11111111); //Baustein 16, Byte 1, einschalten - Fehler > je 3 Bits 3,4,5 und 11,12,13 fehlen..... > sleep 500; > max7311.setb(16,1,0000000); //Baustein 16, Byte 1, ausschalten - Fehler > je 3 Bits 3,4,5 und 11,12,13 fehlen..... > sleep 500; > */ > /* > //----------- > //Teste Ports 0 bis 7 einzeln -ok- > //----------- > > max7311.set(16,0,1); //Baustein 16, Port 0, einschalten > sleep 200; > max7311.set(16,0,0); //Baustein 16, Port 0, ausschalten > sleep 200; > max7311.set(16,1,1); //Baustein 16, Port 1, einschalten > sleep 200; > max7311.set(16,1,0); //Baustein 16, Port 1, ausschalten > sleep 200; > max7311.set(16,2,1); //Baustein 16, Port 2, einschalten > sleep 200; > max7311.set(16,2,0); //Baustein 16, Port 2, ausschalten > sleep 200; > max7311.set(16,3,1); //Baustein 16, Port 3, einschalten > sleep 200; > max7311.set(16,3,0); //Baustein 16, Port 3, ausschalten > sleep 200; > max7311.set(16,4,1); //Baustein 16, Port 4, einschalten > sleep 200; > max7311.set(16,4,0); //Baustein 16, Port 4, ausschalten > sleep 200; > max7311.set(16,5,1); //Baustein 16, Port 5, einschalten > sleep 200; > max7311.set(16,5,0); //Baustein 16, Port 5, ausschalten > sleep 200; > max7311.set(16,6,1); //Baustein 16, Port 6, einschalten > sleep 200; > max7311.set(16,6,0); //Baustein 16, Port 6, ausschalten > sleep 200; > max7311.set(16,7,1); //Baustein 16, Port 7, einschalten > sleep 200; > max7311.set(16,7,0); //Baustein 16, Port 7, ausschalten > sleep 200; > > //----------- > //Teste Ports 8 bis 15 einzeln -ok- > //----------- > > max7311.set(16,8,1); //Baustein 16, Port 8, einschalten > sleep 200; > max7311.set(16,8,0); //Baustein 16, Port 8, ausschalten > sleep 200; > max7311.set(16,9,1); //Baustein 16, Port 9, einschalten > sleep 200; > max7311.set(16,9,0); //Baustein 16, Port 9, ausschalten > sleep 200; > max7311.set(16,10,1); //Baustein 16, Port 10, einschalten > sleep 200; > max7311.set(16,10,0); //Baustein 16, Port 10, ausschalten > sleep 200; > max7311.set(16,11,1); //Baustein 16, Port 11, einschalten > sleep 200; > max7311.set(16,11,0); //Baustein 16, Port 11, ausschalten > sleep 200; > max7311.set(16,12,1); //Baustein 16, Port 12, einschalten > sleep 200; > max7311.set(16,12,0); //Baustein 16, Port 12, ausschalten > sleep 200; > max7311.set(16,13,1); //Baustein 16, Port 13, einschalten > sleep 200; > max7311.set(16,13,0); //Baustein 16, Port 14, ausschalten > sleep 200; > max7311.set(16,14,1); //Baustein 16, Port 14, ein schalten > sleep 200; > max7311.set(16,14,0); //Baustein 16, Port 15, ausschalten > sleep 200; > max7311.set(16,15,1); //Baustein 16, Port 15, einschalten > sleep 200; > max7311.set(16,15,0); //Baustein 16, Port 4, ausschalten > sleep 200; > */ > } > } > > // Max7311 Inputtest > // 11.04.2010 > //----------- > thread main > //----------- > { > //----------- > //Init MAX7311 > //----------- > > string s,s1,s2; > int u,u1; > > rblcd.init(); > rblcd.clear(); > rblcd.setLight(1); > > rblcd.goto(1,0); > s="Max7311 Inputtest"; > rblcd.print(s); > sleep 5000; > > //max7311.setDDRw(16,0000000000000000); //set Datenrichtung: alle Ports als > Ausgang festlegen -ok- > max7311.setDDRw(16,1111111111111111); //set Datenrichtung: alle Ports als > Eingang festlegen -ok- > //max7311.setDDRb(16,0,11111111); //set Datenrichtung: Ports 0-7 als Eingang > festlegen -ok- > //max7311.setDDRb(16,1,11111111); //set Datenrichtung: Ports 8-15 als Eingang > festlegen -ok- > //max7311.setDDR(16,0,0); //set Datenrichtung: Port "0" als Ausgang festlegen > 1=Eingang 0=Ausgang > //max7311.setw(16,1111111111111111); //setze alle Ports "1" > //max7311.setw(16,0000000000000000); //setze alle Ports "0" > > loop > { > u=max7311.getb(16,0); //Baustein 16, Port 0, einschalten - Fehler > je 3 Bits 3,4,5 und 11,12,13 fehlen..... > rblcd.goto(1,0); > rblcd.print ("Ports 7-0 : "); > rblcd.goto(1,11); > s1=""; > str.putmask(s1,u,'1','0'); //Integer wandeln > rblcd.print(s1); > sleep 1000; > > u=max7311.getb(16,1); //Baustein 16, Port 0, ausschalten - Fehler > je 3 Bits 3,4,5 und 11,12,13 fehlen..... > rblcd.print ("Ports 15-8: "); > rblcd.goto(2,11); > s2=""; > str.putmask(s2,u,'1','0'); //Integer wandeln > rblcd.print(s2); > sleep 1000; > } > /* > loop > { > s=""; > s="Datenrichtung zeigen"; //0=Ausgang, 1=Eingang > rblcd.goto(1,0); > rblcd.print(s); > u=max7311.getDDRb(16,0); > s1=""; > str.putmask(s1,u,'1','0'); //Integer wandeln > rblcd.goto(2,0); > rblcd.print(s1); > u1=max7311.getDDRb(16,1); > s2=""; > str.putmask(s2,u,'1','0'); //Integer wandeln > rblcd.goto(2,9); > rblcd.print(s2); > > s=""; > s="Inversion Reg zeigen"; //0=Ausgang, 1=Eingang > rblcd.goto(3,0); > rblcd.print(s); > u=max7311.getPIb(16,0); > s1=""; > str.putmask(s1,u,'1','0'); //Integer wandeln > rblcd.goto(4,0); > rblcd.print(s1); > u1=max7311.getPIb(16,1); > s2=""; > str.putmask(s2,u,'1','0'); //Integer wandeln > rblcd.goto(4,9); > rblcd.print(s2); > sleep 1000; > } > */ > }