SHIP:Data Types:Temperature

From Serious Documentation
Revision as of 15:42, 1 February 2013 by NickW-Serious (talk | contribs) (Created page with "*'''Node Home''' *'''All Data Types''' {{DataTypeTableStart|}} |- |<onlyinclude>{{DataType|Temperature}}||16 bit fixed point integer in whic...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Data Type Description
Temperature 16 bit fixed point integer in which the upper portion is in whole degrees and the lower portion is in 256ths of a degree.

The Temperature datatype is returned by the pcbTemp portvar (the exact format is configured by setting tempPrecision). Generically, the value read from pcbTemp is the whole degrees followed by tempPrecision bits of fractional value. The following are examples on how to properly interpret a Temperature value:

By default tempPrecision is 0:

SIMTempWhole = GPIO.pcbTemp;  // the value is good as-is
SIMTempFrac  = 0;             // unnecessary

For handling any other value of tempPrecision:

SIMTempWhole = (GPIO.pcbTemp >> GPIO.tempPrecision);                  // once the fractional bits are gone, the value is correct
SIMTempFrac  = (GPIO.pcbTemp & (0x00FF >> (8 - GPIO.tempPrecision))); // get rid of the degree bits
SIMTempFrac  = (SIMTempFrac << (8 - GPIO.tempPrecision));             // re-adjust the fractional bits
SIMTempFrac  = (SIMTempFrac*100)/256;                                 // fix up the value to be a proper fraction (currently it is from 0/256 to 255/256 of a degree)