Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: STM32_Button_Interrupt_dla_taty
Diff: DS1820.cpp
- Revision:
- 8:8dfdd1603e4d
- Parent:
- 6:518950e436be
- Child:
- 11:9be3e73c01f1
diff -r 4403a206e78a -r 8dfdd1603e4d DS1820.cpp
--- a/DS1820.cpp Thu Mar 26 20:57:59 2015 +0000
+++ b/DS1820.cpp Fri Mar 27 12:34:16 2015 +0000
@@ -46,8 +46,8 @@
*/
DS1820::DS1820(PinName pin) :
oneWire(pin) {
- present = 0;
- type_s = 0;
+ present = false;
+ model_s = false;
}
/**
@@ -60,15 +60,15 @@
DS1820::DS1820(char model, PinName pin) :
oneWire(pin) {
if((model == 'S') or (model == 's')) {
- present = 1;
- type_s = 1;
+ present = true;
+ model_s = true;
}
else if((model == 'B') or (model == 'b')) {
- present = 1;
- type_s = 0;
+ present = true;
+ model_s = false;
}
else
- present = 0;
+ present = false;
}
/**
@@ -99,33 +99,33 @@
#endif
if(OneWire::crc8(addr, 7) == addr[7]) {
- present = 1;
+ present = true;
// the first ROM byte indicates which chip
switch(addr[0]) {
case 0x10:
- type_s = 1;
+ model_s = true;
#if DEBUG
serial.printf("DS18S20 or old DS1820\r\n");
#endif
break;
case 0x28:
- type_s = 0;
+ model_s = false;
#if DEBUG
serial.printf("DS18B20\r\n");
#endif
break;
case 0x22:
- type_s = 0;
+ model_s = false;
#if DEBUG
serial.printf("DS1822\r\n");
#endif
break;
default:
- present = 0;
+ present = false;
#if DEBUG
serial.printf("Device doesn't belong to the DS1820 family\r\n");
#endif
@@ -142,6 +142,19 @@
}
/**
+ * @brief Informs about presence of a DS1820 sensor.
+ * @note begin() shall be called before using this function
+ * if a generic DS1820 instance was created by the user.
+ * No need to call begin() for a specific DS1820 instance.
+ * @param
+ * @retval true: when a DS1820 sensor is present
+ * false: otherwise
+ */
+bool DS1820::isPresent(void) {
+ return present;
+}
+
+/**
* @brief Sets temperature-to-digital conversion resolution.
* @note The configuration register allows the user to set the resolution
* of the temperature-to-digital conversion to 9, 10, 11, or 12 bits.
@@ -156,7 +169,7 @@
res = 12;
if(res < 9)
res = 9;
- if(type_s)
+ if(model_s)
res = 9;
oneWire.reset();
@@ -173,7 +186,6 @@
oneWire.write(data[i]);
}
-
/**
* @brief Starts temperature conversion
* @note The time to complete the converion depends on the selected resolution:
@@ -213,7 +225,7 @@
serial.printf("raw = %#x\r\n", *p_word);
#endif
- if(type_s) {
+ if(model_s) {
*p_word = *p_word << 3; // 9-bit resolution
if(data[7] == 0x10) {
@@ -264,3 +276,4 @@
return (float(word) / 256.0f);
}
+