Dallas' DS1820 family temperature sensor. For more details see [https://developer.mbed.org/users/hudakz/code/DS1820/wiki/Homepage]

Dependencies:   OneWire

Fork of DS1820 by Zoltan Hudak

Revision:
3:a250babd0a9f
Parent:
2:b7ad1da7331a
Child:
4:adf4e7972d73
--- a/DS1820.cpp	Mon Mar 16 08:52:33 2015 +0000
+++ b/DS1820.cpp	Thu Mar 19 19:11:12 2015 +0000
@@ -1,3 +1,28 @@
+/*
+ * Dallas' DS1820 family temperature sensor.
+ * This library depends on the OneWire library (Dallas' 1-Wire bus protocol implementation)
+ * which is available at <http://developer.mbed.org/users/hudakz/code/OneWire/>
+ *
+ * Example of use:
+ * 
+ * #include "DS1820.h"
+ * 
+ * int main() {
+ *     DS1820  ds1820(PA_9);
+ *
+ *     if(ds1820.begin()) {
+ *        ds1820.startConversion();
+ *        wait(1.0);
+ *        while(1) {
+ *            serial.printf("temp = %3.1f\r\n", ds1820.read());
+ *            ds1820.startConversion();
+ *            wait(1.0);
+ *        }
+ *    } else
+ *        serial.printf("No DS1820 sensor found!\r\n");
+ * }
+ */
+ 
 #include "DS1820.h"
 
 #define DEBUG 0
@@ -9,7 +34,7 @@
 /**
  * @brief   Constructs a generic DS1820 sensor
  * @note    begin() must be called to detect and initialize the actual model
- * @param   Name of data pin
+ * @param   pin: Name of data pin
  * @retval
  */
 DS1820::DS1820(PinName pin) :
@@ -21,8 +46,8 @@
 /**
  * @brief   Constructs a specific model
  * @note    No need to call begin() to detect and initialize the model
- * @param   One character model name: 'S', 's', 'B' or 'b'
- *          Name of data pin
+ * @param   model:  One character model name: 'S', 's', 'B' or 'b'
+ *          pin:    Name of data pin
  * @retval
  */
 DS1820::DS1820(char model, PinName pin) :
@@ -118,10 +143,8 @@
 void DS1820::startConversion(void) {
     if(present) {
         oneWire.reset();
-
-        //oneWire.select(addr);
         oneWire.skip();
-        oneWire.write(0x44);    //start conversion
+        oneWire.write(0x44);    //start temperature conversion
     }
 }
 
@@ -142,6 +165,8 @@
         // Convert the raw bytes to a 16bit signed fixed point value :
         // 1 sign bit, 7 integer bits, 8 fractional bits (two’s compliment
         // ie. the LSB of the 16bit binary number represents 1/256th of a unit).
+        // Finally the 16bit signed fixed point value is converted 
+        // to floating point value by calling the toFloat(value) function.
 
         uint16_t*   p_word = reinterpret_cast < uint16_t * > (&data[0]);
 
@@ -182,7 +207,7 @@
 }
 
 /**
- * @brief   Converts a 16bit signed fixed point value to float
+ * @brief   Converts a 16bit signed fixed point value to floating point value
  * @note    The 16bit unsigned integer represnts actually
  *          a 16bit signed fixed point value:
  *          1 sign bit, 7 integer bits, 8 fractional bits
@@ -192,7 +217,6 @@
  * @retval  Floating point temperature value
  */
 float DS1820::toFloat(uint16_t word) {
-    //word = word << 4;
     if(word & 0x8000)
         return (-float(uint16_t(~word + 1)) / 256.0f);
     else