
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> Hallo Thomas! > > > Ich habe einen DS1621 mit der Adresse 000 an den i2c Bus angeschlossen........... > > Du meinst sicher die Adress-Pins vom DS1621, die Du alle gegen Masse geschaltet hast. In dem Fall ist die I2C-Bus Adresse des DS1621 dezimal 144. Danach kannst Du wie folgt vorgehen: > > Variabeln definieren > Define DS1621_Temperatur Byte > Define DS1621_Kommastelle Byte > Define Tmp Byte > Define Grad Word > Define Counter Word > Define Slope Word > > 1.) Temperaturmessung starten > I2C_Start > I2C_Write(144) ‘ Adresse > I2C_Write(238) ‘ Temperaturmessung anstoßen > I2C_Stop > > 2.) Kurze Zeit warten > Pause 10 > > 3.) Temperaturmessung anhalten > I2C_Start > I2C_Write(144) ‘ Adresse > I2C_Write(34) ‘ Temperaturmessung stoppen > I2C_Stop > > 4.) Temperatur einlesen > I2C_Start > I2C_Write(144) ‘ Adresse > I2C_Write(170) ‘ Temperaturmessung Lesekommando > I2C_Start > I2C_Write(144+1) ‘ Adresse lesen > Grad = I2C_Read(no ACK) > I2C_Stop > > 5.) Kommastelle einlesen > I2C_Start > I2C_Write(144) ‘ Adresse > I2C_Write(168) ‘ Counter Lesekommando > I2C_Start > I2C_Write(144+1) ‘ Adresse lesen > Counter = I2C_Read(no ACK) > I2C_Stop > I2C_Start > I2C_Write(144) ‘ Adresse > I2C_Write(169) ‘ Slope Lesekommando > I2C_Start > I2C_Write(144+1) ‘ Adresse lesen > Slope = I2C_Read(no ACK) > I2C_Stop > > 6.) Kommastelle berechnen > DS1621_Temperatur = ((Grad*100-25)+((Slope-Counter)*100/Slope*100)/100)/100 ‘ Formel Temperatur > DS1621_Kommastelle = ((Grad*100-25)+((Slope-Counter)*100/Slope*100)/100) % 100 ‘ Formel Kommastelle (zweistellig) > ‘ Kommastelle auf einstellug einstellen > Tmp = DS1621_Kommastelle % 10 ‘ MOD Kommastelle > DS1621_Kommastelle = DS1621_Kommastelle / 10 ‘ Kommastelle durch 10 teilen (einstellig) > if Tmp >= 5 Then DS1621_Kommastelle + 1 ‘ wenn MOD größer 5, dann aufrunden > > 7.) Temperatur anzeigen > Print "Temperatur: ",DS1621_Temperatur,",",DS1621_Kommastelle," °C" > > Damit kann der DS1621 die Temperatur auf 0,1°C genau anzeigen. Wenn Dir eine Auflösung von 0,5°C ausreicht, dann kannst Du Counter und Slope weg lassen und die Kommastelle direkt auslesen... > > LG Jens |
| Antwort schreiben |