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 > > > Mein Temperatur Modul zeigt konstant 196,0°C an. Alles richtig angeschlossen und mit Demoprogramm > > > DS1631.cprj gestartet. Bin kein Profi auf C und brauche eine Demoversion welche funktioniert! > > > Bitte um Hilfe! > > > > Hallo, > > > > hast du Pullup-Wiederstände dran. > > 2 x 4,7k SDA u. SCL gegen + > > Oder > > schau mal ob die Adresse stimmt. > > > > > > Hier noch der Code mit dem du 1/10° und minus messen kannst. > > Ist leider nicht für die AVR32, aber wenn du immer von Start bis Stop > > in I2C_Write(... oder I2C_Read(... umschreibst dann funktioniert das auch. > > Schau aber erst das deine Demo läuft, damit du sicher bist, > > dass alles richtig angeschlossen ist. > > <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 > > Static vAgain As Byte > > Static vIICResetCnt As Word 'zählt die Aufrufe der DS1631_READ() für den regelmäsigen Neustart der IIC > > If vIICResetCnt > 600 Then 'wurde die Tempmessung zum 600sten Mal durchgeführt > > vIICResetCnt = 0 'löschen > > I2C_Init(150) 'Reset > > Else > > If vAgain <> Clock_GetVal(0) Then 'nur ein Mal pro Sekunden die Temperatur abfragen > > vAgain = Clock_GetVal(0) 'aktuelle Sekunde in die Varable > > vIICResetCnt++ > > 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 > > If T < 430 And T > (0 - 320) Then 'nur realistische Werte zulassen > > DS1631Temp = T > > Else > > Thread_Delay(200) > > I2C_Init(150) 'bei unrealistischem Wert I2C neu starten > > Thread_Delay(20) > > End If > > End If > > End If > > End Sub</basic> > > Danke für die prompte Antwort! > Habe das Problem gelöst nachdem ich die IDE Beta Version heruntergeladen hatte. > Werde trotzdem versuchen Dein Programm auf die AVR32 umzumodeln! > Grüße vom Zuberpaul