LM74 temperature sensor Library on SPI I/F
Revision 1:a29c5af6c1f0, committed 2011-03-11
- Comitter:
- atpolitis
- Date:
- Fri Mar 11 09:55:23 2011 +0000
- Parent:
- 0:9293a89e30e2
- Commit message:
- correction for negative temperarures
Changed in this revision
TmpLM74.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 9293a89e30e2 -r a29c5af6c1f0 TmpLM74.cpp --- a/TmpLM74.cpp Thu Mar 10 18:23:12 2011 +0000 +++ b/TmpLM74.cpp Fri Mar 11 09:55:23 2011 +0000 @@ -17,28 +17,30 @@ float TmpLM74::readTemp(void){ float realTemp; - int16_t binTemp; - uint16_t tempRegister; + int16_t tempRegister; _csLM74 = 0; tempRegister = ((uint16_t) write(0xFF)) << 8; - tempRegister += write(0xFF); - + tempRegister |= write(0xFF); + _csLM74 = 1; - binTemp = tempRegister >> 3; +// tempRegister = (((uint16_t) 0xE4) << 8) | 0x84; // -55.0 C +// tempRegister = (((uint16_t) 0xFB) << 8) | 0x04; // -10.0 C +// tempRegister = 0x8000; // power down + +// pc.printf("TempRegister = 0x%x\n", tempRegister); debugging ONLY - if((tempRegister & 0xFFFC) == 0x8000) { // Manufacturer's Device ID Register (power down) - startLM74(); - binTemp = INVALID_LM74_TEMP; - } else if ((tempRegister & 0x0004) == 0) { // temp reading NOT ready - binTemp = INVALID_LM74_TEMP; - } else if (binTemp > 0x0FFF) { // negative temperature - binTemp &= 0xFFF; - binTemp = ~binTemp; + if ((tempRegister & 0x0004) == 0) { // temp reading NOT ready or LM74 in power down + if((tempRegister & 0xFFFC) == 0x8000) { // Manufacturer's Device ID Register (power down) ? + startLM74(); + } + tempRegister = INVALID_LM74_TEMP; + } else { + tempRegister >>= 3; } - realTemp = ((float) binTemp) * 0.0625; + realTemp = ((float) tempRegister) * 0.0625; return realTemp; }