Steve-
Dunno what I had thought I was looking at, but when I un-commented those other lines, I now get correct readings!
This is now what seems to be working:
BTW, going to be in your neck of the woods this Wednesday, 2 days in London, then take a boat out from South Hampton on a cruise through the Baltics.
Thanks for pushing me in the right track!
Regards,
Steve
Code:
ReadDS18S20:' Works, Thanks 'Kid' and Steve from the UK....from Forum-----------
owout Tsensor,1,[$CC, $44] 'Send Start Temperature Conversion command
owout Tsensor,1,[$CC, $BE] 'Send Read Temperature command
owin Tsensor,0,[STR dq\9] 'Retrieve all 9 bytes of data
RawTemp.Byte0 = dq[0]
RawTemp.byte1 = dq[1]
if RawTemp.8 = 1 then 'Check if temperature is a negative reading
SignC = Negative
RawTemp.lowbyte = RawTemp.lowbyte ^ 255 'Invert data
else
SignC = Positive
endif
dummy = RawTemp.0 'Store the half degree indicator bit
TempC = ((RawTemp.lowbyte) >> 1) * 100 'Divide raw data by 2 to give real temperature
TempC = TempC + (dummy * 50) 'Add the half degree is present
if SignC = Negative then 'Only proceed if temperature is negative - doesnt work for F, fine for C
if TempC => 1770 then
SignF = Negative
TempF = (TempC + 5000) * 900
TempF = div32 500
TempF = TempF - 12200
return
else
SignF = Positive
TempF = (TempC + 5000) * 900
TempF = div32 500
TempF = 12200 - TempF
return
endif
endif
SignF = Positive 'Sign is +
TempF = ((TempC * 18) / 10) + 3200 'Convert from C to F
return
Bookmarks