I2C Bus Porterweiterungen1816R Kategorie: I²C-Bus (von Friedhelm Kesten - 12.04.2010 18:30) | ||
| ||
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; } */ } | ||
Antwort schreiben Antworten: Re: I2C Bus Porterweiterungen1816R (von nitraM - 13.04.2010 9:41) Re: I2C Bus Porterweiterungen1816R (von Friedhelm Kesten - 15.04.2010 8:48) Re: I2C Bus Porterweiterungen1816R (von Andreas - 13.04.2010 9:39) Re: I2C Bus Porterweiterungen1816R (von Friedhelm Kesten - 15.04.2010 8:56) |