С DS18b20 читается кривая температура.
Делаю так на VB6:
MyHandle = TMExtendedStartSession(1, 1, vbNullString)
dmmy = TMTouchReset(MyHandle)
dmmy = TMTouchByte(MyHandle, &H44)
Pause (1)
'Read the scratch of a DS18/1920.
If TMAccess(MyHandle, state_buffer(0)) <> 1 Then GoTo point1
dmmy = TMTouchByte(MyHandle, &HBE)
For I = 0 To 8
dmmy = TMTouchByte(MyHandle, &HFF)
If dmmy < 0 Then
GoTo point1
Else
TEMP_buffer(I) = dmmy
End If
Next I
' calculate the temperature */
tsht = TEMP_buffer(0)
TMP = (tsht / 2)
cr = TEMP_buffer(6)
cpc = TEMP_buffer(7)
If (TEMP_buffer(7) = 0) Then
GoTo point1
Else
TMP = TMP - 0.25 + (cpc - cr) / cpc
End If
В результате в первом бите почти всегда 120, а во втором 1,
температура получается 59С. Хотя на самом деле, с помощью
программы Temp. Keeper температура реальная
меряется, где я ошибаюсь?
P.S. Даташит читал, вдоль и поперек.