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.
Fork of MAX31856_example_program by
Diff: MAX31856.cpp
- Revision:
- 9:2d284cc2f65c
- Parent:
- 8:8723d0006097
- Child:
- 10:4b907f32b4d4
--- a/MAX31856.cpp Tue Aug 01 03:29:15 2017 +0000
+++ b/MAX31856.cpp Tue Aug 01 03:37:57 2017 +0000
@@ -473,85 +473,42 @@
}
-////Register:MASK Bits: 5:0
-////******************************************************************************
-//float MAX31856::setFaultThresholds(uint8_t val, bool enable_mask, float temperature)
-//{
-// float return_val;
-// uint8_t temp_val;
-// if(enable_mask) {
-// temp_val=0;
-// }
-// else {
-// temp_val=val;
-// }
-// if (val==MASK_CJ_FAULT_THRESHOLD_HIGH) { //Cold Junction High Threshold Fault Mask
-// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_5, temp_val);
-//
-// int8_t temperature_byte=temperature;
-//
-// if (temperature_byte>CJ_MAX_VAL_FAULT)
-// temperature_byte=CJ_MAX_VAL_FAULT;
-// else if (temperature_byte<=0 || temperature_byte>=CJ_MIN_VAL_FAULT)
-// temperature_byte=twosComplimentToSigned8(temperature_byte); //Convert the 2's compliment int into a signed value
-// else if (temperature_byte<CJ_MIN_VAL_FAULT)
-// temperature_byte=twosComplimentToSigned8(CJ_MIN_VAL_FAULT); //Convert the 2's compliment int into a signed value
-// //else the data is within range, no more manipulation of data is needed
-// return_val=registerWriteByte(ADDRESS_CJHF_WRITE, temperature_byte);
-// }
-// else if (val==MASK_CJ_FAULT_THRESHOLD_LOW) { //Cold Junction Low Threshold Fault Mask
-// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_4, temp_val);
-//
-// int8_t temperature_byte=temperature;
-//
-// if (temperature_byte>CJ_MAX_VAL_FAULT)
-// temperature_byte=CJ_MAX_VAL_FAULT;
-// else if (temperature_byte<=0 || temperature_byte>=CJ_MIN_VAL_FAULT)
-// temperature_byte=twosComplimentToSigned8(temperature_byte); //Convert the 2's compliment int into a signed value
-// else if (temperature_byte<CJ_MIN_VAL_FAULT)
-// temperature_byte=twosComplimentToSigned8(CJ_MIN_VAL_FAULT); //Convert the 2's compliment int into a signed value
-// //else the data is within range, no more manipulation of data is needed
-//
-// return_val=registerWriteByte(ADDRESS_CJLF_WRITE, temperature_byte);
-// }
-// else if (val==MASK_TC_FAULT_THRESHOLD_HIGH) { //Thermocouple High Threshold Fault Mask
-// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_3, temp_val);
-//
-// if (temperature) {
-// int8_t temperature_byte[2];
-// int16_t temperature_multi_byte =(int16_t)(temperature*4.0);
-// if (temperature_multi_byte>(TC_MAX_VAL_FAULT*4.0f))
-// temperature_multi_byte=TC_MAX_VAL_FAULT*4.0f;
-// else if (temperature_multi_byte<=0 || temperature_multi_byte>=(TC_MIN_VAL_FAULT*4.0f))
-// temperature_multi_byte=twosComplimentToSigned16(temperature_multi_byte); //Convert the 2's compliment int into a signed value
-// else if (temperature_multi_byte<(TC_MIN_VAL_FAULT*4.0f))
-// temperature_multi_byte=twosComplimentToSigned16(TC_MIN_VAL_FAULT*4.0f); //Convert the 2's compliment int into a signed value
-//
-// //now split up the 32bit int into two bytes to program the registers with
-// temperature_byte[0]=((uint8_t)((temperature_multi_byte)&(0xFF00) >> 8));
-// temperature_byte[1]=((uint8_t)((temperature_multi_byte)&(0x00FF)));
-//
-// return_val=registerWriteByte(ADDRESS_LTHFTH_WRITE, temperature_byte[0]);
-// return_val=registerWriteByte(ADDRESS_LTHFTL_WRITE, temperature_byte[1]);
-//
-// return_val=temperature;
-// }
-//// else {
-//// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////return_val="WHATEVER IS IN THE REGISTERS WHEN YOU SET THE FLAG JUST INCASE YOU NEED TO SEE WHAT IS INSISIDE THE REGISTER";
-//// }
-// }
-// else if (val==MASK_TC_FAULT_THRESHOLD_LOW) //Thermocouple Low Threshold Fault Mask
-// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_2, temp_val);
-// else if (val==MASK_OVER_UNDER_VOLT_FAULT) //Over-Voltage/Under-Voltage Input Fault Mask
-// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_1, temp_val);
-// else if (val==MASK_OPEN_CIRCUIT_FAULT) //Thermocouple Open-Circuit Fault Mask
-// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_0, temp_val);
-// else {
-// LOG("Incorrect parameter selected for MASK Register. Default value not changed.\r\nPlease see MAX31856.h for list of valid parameters. \r\n");
-// return_val=0; //returns a 0 to flag that the parameter wasn't programmed due to wrong parameter in function call
-// }
-// return return_val;
-//}
+//Register:MASK Bits: 5:0
+//******************************************************************************
+bool MAX31856::setFaultThresholds(uint8_t val, float temperature)
+{
+ if (val==MASK_CJ_FAULT_THRESHOLD_HIGH) { //Cold Junction High Threshold Fault Mask
+ int8_t temperature_byte=temperature;
+ return_val=registerWriteByte(ADDRESS_CJHF_WRITE, temperature_byte);
+ }
+ else if (val==MASK_CJ_FAULT_THRESHOLD_LOW) { //Cold Junction Low Threshold Fault Mask
+ int8_t temperature_byte=temperature;
+ return_val=registerWriteByte(ADDRESS_CJLF_WRITE, temperature_byte);
+ }
+ else if (val==MASK_TC_FAULT_THRESHOLD_HIGH) { //Thermocouple High Threshold Fault Mask
+ int8_t temperature_byte[2];
+ int16_t temperature_multi_byte =temperature*4.0;
+ //now split up the 16bit int into two bytes to program the registers with
+ temperature_byte[0]=((uint8_t)((temperature_multi_byte)&(0xFF00) >> 8));
+ temperature_byte[1]=((uint8_t)((temperature_multi_byte)&(0x00FF)));
+
+ return_val=registerWriteByte(ADDRESS_LTHFTH_WRITE, temperature_byte[0]);
+ return_val=registerWriteByte(ADDRESS_LTHFTL_WRITE, temperature_byte[1]);
+ }
+ else if (val==MASK_TC_FAULT_THRESHOLD_LOW) { //Thermocouple LOW Threshold Fault Mask
+ int8_t temperature_byte[2];
+ int16_t temperature_multi_byte =temperature*4.0;
+ //now split up the 16bit int into two bytes to program the registers with
+ temperature_byte[0]=((uint8_t)((temperature_multi_byte)&(0xFF00) >> 8));
+ temperature_byte[1]=((uint8_t)((temperature_multi_byte)&(0x00FF)));
+
+ return_val=registerWriteByte(ADDRESS_LTHFTH_WRITE, temperature_byte[0]);
+ return_val=registerWriteByte(ADDRESS_LTHFTL_WRITE, temperature_byte[1]);
+ }
+ else
+ LOG("Please select correct threshold register to program with the correct value!\r\n");
+ return return_val;
+}
//******************************************************************************
bool MAX31856::coldJunctionOffset(float temperature)
@@ -766,3 +723,82 @@
// return temp;
//}
+////Register:MASK Bits: 5:0
+////******************************************************************************
+//float MAX31856::setFaultThresholds(uint8_t val, bool enable_mask, float temperature)
+//{
+// float return_val;
+// uint8_t temp_val;
+// if(enable_mask) {
+// temp_val=0;
+// }
+// else {
+// temp_val=val;
+// }
+// if (val==MASK_CJ_FAULT_THRESHOLD_HIGH) { //Cold Junction High Threshold Fault Mask
+// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_5, temp_val);
+//
+// int8_t temperature_byte=temperature;
+//
+// if (temperature_byte>CJ_MAX_VAL_FAULT)
+// temperature_byte=CJ_MAX_VAL_FAULT;
+// else if (temperature_byte<=0 || temperature_byte>=CJ_MIN_VAL_FAULT)
+// temperature_byte=twosComplimentToSigned8(temperature_byte); //Convert the 2's compliment int into a signed value
+// else if (temperature_byte<CJ_MIN_VAL_FAULT)
+// temperature_byte=twosComplimentToSigned8(CJ_MIN_VAL_FAULT); //Convert the 2's compliment int into a signed value
+// //else the data is within range, no more manipulation of data is needed
+// return_val=registerWriteByte(ADDRESS_CJHF_WRITE, temperature_byte);
+// }
+// else if (val==MASK_CJ_FAULT_THRESHOLD_LOW) { //Cold Junction Low Threshold Fault Mask
+// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_4, temp_val);
+//
+// int8_t temperature_byte=temperature;
+//
+// if (temperature_byte>CJ_MAX_VAL_FAULT)
+// temperature_byte=CJ_MAX_VAL_FAULT;
+// else if (temperature_byte<=0 || temperature_byte>=CJ_MIN_VAL_FAULT)
+// temperature_byte=twosComplimentToSigned8(temperature_byte); //Convert the 2's compliment int into a signed value
+// else if (temperature_byte<CJ_MIN_VAL_FAULT)
+// temperature_byte=twosComplimentToSigned8(CJ_MIN_VAL_FAULT); //Convert the 2's compliment int into a signed value
+// //else the data is within range, no more manipulation of data is needed
+//
+// return_val=registerWriteByte(ADDRESS_CJLF_WRITE, temperature_byte);
+// }
+// else if (val==MASK_TC_FAULT_THRESHOLD_HIGH) { //Thermocouple High Threshold Fault Mask
+// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_3, temp_val);
+//
+// if (temperature) {
+// int8_t temperature_byte[2];
+// int16_t temperature_multi_byte =(int16_t)(temperature*4.0);
+// if (temperature_multi_byte>(TC_MAX_VAL_FAULT*4.0f))
+// temperature_multi_byte=TC_MAX_VAL_FAULT*4.0f;
+// else if (temperature_multi_byte<=0 || temperature_multi_byte>=(TC_MIN_VAL_FAULT*4.0f))
+// temperature_multi_byte=twosComplimentToSigned16(temperature_multi_byte); //Convert the 2's compliment int into a signed value
+// else if (temperature_multi_byte<(TC_MIN_VAL_FAULT*4.0f))
+// temperature_multi_byte=twosComplimentToSigned16(TC_MIN_VAL_FAULT*4.0f); //Convert the 2's compliment int into a signed value
+//
+// //now split up the 32bit int into two bytes to program the registers with
+// temperature_byte[0]=((uint8_t)((temperature_multi_byte)&(0xFF00) >> 8));
+// temperature_byte[1]=((uint8_t)((temperature_multi_byte)&(0x00FF)));
+//
+// return_val=registerWriteByte(ADDRESS_LTHFTH_WRITE, temperature_byte[0]);
+// return_val=registerWriteByte(ADDRESS_LTHFTL_WRITE, temperature_byte[1]);
+//
+// return_val=temperature;
+// }
+//// else {
+//// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////return_val="WHATEVER IS IN THE REGISTERS WHEN YOU SET THE FLAG JUST INCASE YOU NEED TO SEE WHAT IS INSISIDE THE REGISTER";
+//// }
+// }
+// else if (val==MASK_TC_FAULT_THRESHOLD_LOW) //Thermocouple Low Threshold Fault Mask
+// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_2, temp_val);
+// else if (val==MASK_OVER_UNDER_VOLT_FAULT) //Over-Voltage/Under-Voltage Input Fault Mask
+// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_1, temp_val);
+// else if (val==MASK_OPEN_CIRCUIT_FAULT) //Thermocouple Open-Circuit Fault Mask
+// return_val=registerReadWriteByte(ADDRESS_MASK_READ, ADDRESS_MASK_WRITE, MASK_CLEAR_BITS_0, temp_val);
+// else {
+// LOG("Incorrect parameter selected for MASK Register. Default value not changed.\r\nPlease see MAX31856.h for list of valid parameters. \r\n");
+// return_val=0; //returns a 0 to flag that the parameter wasn't programmed due to wrong parameter in function call
+// }
+// return return_val;
+//}
\ No newline at end of file
