Re: 1Wire Bridge Kategorie: I²C-Bus (von Mexx - 25.09.2008 12:49) | |
Als Antwort auf 1Wire Bridge von Uwe Dmoch - 21.09.2008 15:38
| |
Hallo Uwe, Hast Du den I2C Bus vorher initialisiert ? i2c.init (); danach kannst Du dann die Bridge initialiseren bei mir sieht das dann so aus: ds2482.init (var.I2C_1WIRE_A_ADDR); ds2482.init (var.I2C_1WIRE_B_ADDR); Ich habe bei meiner Heizungssteuerung eine kleine Funktion welche alle angeschlossenen Sensoren auf HWCOm ausgibt (2x 1-Wire Bridge) , vielleicht hilft das auch: --------------------------------------------------------------------------------------------- const Sensoren=8; // max. Anzahl zu findender Sensoren type sensoren { byte addr[Sensoren]; } sensoren OWSensoren[Sensoren]; // Zweidimensionales Array für 1W-Adressen long val; //***************************************************************************** // function search //***************************************************************************** // Funktion : //----------------------------------------------------------------------------- // Parameter: - //----------------------------------------------------------------------------- // Return : - //***************************************************************************** function search () { byte i, j, k, LastDis; int sec; wait (0 == var.b_gettemp); var.b_gettemp = var.TRUE; ds2482.init(0); // 1W-Bridge initialisieren hwcom.setspeed(8); // 57.600 Baud hwcom.clr(); // Terminal-Fenster löschen for i=0...Sensoren-1 { for k=0...7 { OWSensoren[i].addr[k] = 0; } } for i=0...Sensoren-1 { LastDis=ds2482.getDevice(0, // I²C-Bus-Sub-Adresse DS2482 i==0, // True = Start Suchsequenz OWSensoren[i-1].addr, // Byte-Array mit zuvor gefundener ROM-Adresse LastDis, // Letztes Bit mit Diskrepanz (letzter Rückgabewert der Funktion) OWSensoren[i].addr); // Ziel-Array für gefundene ROM-Adresse if LastDis==0 break; } hwcom.print("DS2482 Adresse 0"); hwcom.ret(); hwcom.print("Anzahl gefundene Sensoren: "); if LastDis hwcom.print("mindestens "); hwcom.num(i+1); // Ausgabe der Adressen: for j=0 ... i-(LastDis!=0 and 1) { hwcom.ret(); for k=0...7 { hwcom.num(OWSensoren[j].addr[k]); hwcom.tab(); } // hwcom.tab(); val = ds18b20.getTempl(0,OWSensoren[j].addr); hwcom.num(val); } hwcom.ret(); hwcom.ret(); ds2482.init(1); // 1W-Bridge initialisieren for i=0...Sensoren-1 { for k=0...7 { OWSensoren[i].addr[k] = 0; } } for i=0...Sensoren-1 { LastDis=ds2482.getDevice(1, // I²C-Bus-Sub-Adresse DS2482 i==0, // True = Start Suchsequenz OWSensoren[i-1].addr, // Byte-Array mit zuvor gefundener ROM-Adresse LastDis, // Letztes Bit mit Diskrepanz (letzter Rückgabewert der Funktion) OWSensoren[i].addr); // Ziel-Array für gefundene ROM-Adresse if LastDis==0 break; } hwcom.print("DS2482 Adresse 1"); hwcom.ret(); hwcom.print("Anzahl gefundene Sensoren: "); if LastDis hwcom.print("mindestens "); hwcom.num(i+1); // Ausgabe der Adressen: for j=0 ... i-(LastDis!=0 and 1) { hwcom.ret(); for k=0...7 { hwcom.num(OWSensoren[j].addr[k]); hwcom.tab(); } // hwcom.tab(); val = ds18b20.getTempl(1,OWSensoren[j].addr); hwcom.num(val); } var.b_gettemp = var.FALSE; } --------------------------------------------------------------------------------------------- Schöne Grü�e Mexx | |
Antwort schreiben Antworten: Re: 1Wire Bridge (von Uwe Dmoch - 25.09.2008 22:13) Re: 1Wire Bridge (von Mexx - 26.09.2008 23:32) Re: 1Wire Bridge (von Uwe Dmoch - 27.09.2008 10:47) |