Build-a-Driver #4: Temp Calcs v2


Here's the fourth patch in the Build-a-Driver series for MCP9808.
(If this post seems out of context, please refer to "Build-a-Driver Introduction" post.)

This patch updates the temp calculation.

In hindsight, I should have implemented the changeable resolution times before the temp calcs. Although the temp calcs could be done purely w pencil/paper at any time, it wasn't until I started testing resolution times that I more fully understood the resolution model.  

Still returning that 12 bit raw temp value, but changing the scale.

Replaced:
Ambient Temp = raw * integration_time

With:
Ambient Temp = raw * (1/2^shift * integration_time)

Simply is:
Ambient Temp = raw * .06250

Integration time * Shift = Scale
.5 * .125 = .0625
.25 * .25 = .0625
.125 * .5 = .0625
.0615 * 1 = .0625

Scale is now returned as 62500 and IIO_VAL_INT_PLUS_MICRO

After the next patch with the resolution switching support, I'll post the test data & proof this works.

This version mcp9808-calc-v2.c
To view complete revision history go here.


Labels: ,