Re: W1: w1_slave units, standardize 1C or .001C? Break API

From: H. Peter Anvin
Date: Mon Jan 21 2008 - 22:28:21 EST


H. Peter Anvin wrote:
David Fries wrote:
The ds18b20 one wire temperature sensor conversion routine is
returning the units in degrees C while the ds1820 (ds18s20) is
returning it in .001 degrees C. 20C vs 20312C. Once you know the
units I'm liking the latter as it gives a higher precision. Time to
break user applications so the driver can give the temperature in the
same units for both sensors.

I only have the ds18b20 sensor model. Here is the current output from
the sys file for this sensor.
/sys/devices/w1_bus_master1/28-0000000e84a2/w1_slave
45 01 4b 46 7f ff 0b 10 84 : crc=84 YES
45 01 4b 46 7f ff 0b 10 84 t=20

I ran the example data from the specification for the ds1820 through
it's conversion routine and found that t= was 1000 times the value. What should the displayed units be? This is the same ds18b20 conversion *1000. Is everyone ok or is any
objecting to .001 degrees C for the units? Patch will follow. The
.001 C does truncate one bit of precision from the ds18b20 by the way.


Millikelvins would have the nice property of never being negative. :)


Alternatively, centikelvins would fit nicely in 16 bits if anyone cares...

655.35 K = 382.20 °C = 719.96 °F

-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/