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> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > Sehr geehrte Damen und Herren, > > > > Ich habe ein Problem mit dem Temperatur-Sensor für I²C. > > > > Der Erste wert den das mitgelieferte Beispielprogramm ausgibt beträgt immer 196°. > > Deshalb habe ich eine Programm-Schleife eingefügt. > > Des weiteren erhalte ich einen Wert von 255° über 40° und unterhalb von -6°. > > Ansonsten scheint der Sensor tatsächlich auf 0,5° genau zu funktionieren. > > > > Am Ende des Coodes wurde erwähnt dass Fehler und Bugs berichtet werden sollen. > > Meine Frage > > > > 1. Ist etwas defekt? Bus Fehler (Wackelkontakt der Leitung) kann ausgeschlossen werden, > > da der Fehler Temperatur abhängig auftritt. > > 2. Was kann ich dagegen tuen? > > > > vielen Dank! > > > > Hans > > Hallo Hans, > teste mal die 12Bit-Auswertung > > <basic> > #define DS1631_W &H9E ' Schreibadresse > #define DS1631_R &H9F ' Leseadresse > > Sub DS1631_READ() > Dim Counter, Slope, DS1631Byte1, DS1631Byte2 As Byte > Dim T As Integer > I2C_Start() > I2C_Write(DS1631_W) > I2C_Write(&HEE) > I2C_Stop() > I2C_Start() > I2C_Write(DS1631_W) > I2C_Write(&H22) > I2C_Stop() > I2C_Start() > I2C_Write(DS1631_W) > I2C_Write(&HAA) > I2C_Stop() > I2C_Start() > I2C_Write(DS1631_R) > DS1631Byte1 = I2C_Read_NACK() > I2C_Stop() > I2C_Start() > I2C_Write(DS1631_W) > I2C_Write(&HA8) > I2C_Stop() > I2C_Start() > I2C_Write(DS1631_R) > Counter = I2C_Read_NACK() > I2C_Stop() > I2C_Start() > I2C_Write(DS1631_W) > I2C_Write(&HA9) > I2C_Stop() > I2C_Start() > I2C_Write(DS1631_R) > Slope = I2C_Read_NACK() > I2C_Stop() > Slope = Slope > DS1631Byte2 = (((Slope - Counter) * 100 / Slope * 100) / 100) / 10 > If (DS1631Byte1 And 128) = 0 Then > T = DS1631Byte1 * 10 + DS1631Byte2 > Else 'bei negativer Temperatur > DS1631Byte1 = (Not DS1631Byte1) + 1 'bilde Zweier Komplement > DS1631Byte2 = 9 - DS1631Byte2 > T = DS1631Byte1 * 10 + DS1631Byte2 > T = - T > End If </basic> > > T ist dann in 1/10°C 200 ^= 20,0°C > > Gruß Daneie