MAX31856_H

by Marwen Maghrebi
#ifndef MAX31856_H
#define MAX31856_H

#include "main.h"
#include <stdio.h>
#include <stdbool.h>
#include <math.h>

#define MAX31856_CR0_REG          0x00         ///< Config 0 register
#define MAX31856_CR0_AUTOCONVERT  0x80 ///< Config 0 Auto convert flag
#define MAX31856_CR0_1SHOT        0x40       ///< Config 0 one shot convert flag
#define MAX31856_CR0_OCFAULT1     0x20    ///< Config 0 open circuit fault 1 flag
#define MAX31856_CR0_OCFAULT0     0x10    ///< Config 0 open circuit fault 0 flag
#define MAX31856_CR0_CJ           0x08          ///< Config 0 cold junction disable flag
#define MAX31856_CR0_FAULT        0x04       ///< Config 0 fault mode flag
#define MAX31856_CR0_FAULTCLR     0x02    ///< Config 0 fault clear flag

#define MAX31856_CR1_REG          0x01  ///< Config 1 register
#define MAX31856_MASK_REG         0x02 ///< Fault Mask register
#define MAX31856_CJHF_REG         0x03 ///< Cold junction High temp fault register
#define MAX31856_CJLF_REG         0x04 ///< Cold junction Low temp fault register
#define MAX31856_LTHFTH_REG                                                    \
  0x05 ///< Linearized Temperature High Fault Threshold Register, MSB
#define MAX31856_LTHFTL_REG                                                    \
  0x06 ///< Linearized Temperature High Fault Threshold Register, LSB
#define MAX31856_LTLFTH_REG                                                    \
  0x07 ///< Linearized Temperature Low Fault Threshold Register, MSB
#define MAX31856_LTLFTL_REG                                                    \
  0x08 ///< Linearized Temperature Low Fault Threshold Register, LSB
#define MAX31856_CJTO_REG 0x09  ///< Cold-Junction Temperature Offset Register
#define MAX31856_CJTH_REG 0x0A  ///< Cold-Junction Temperature Register, MSB
#define MAX31856_CJTL_REG 0x0B  ///< Cold-Junction Temperature Register, LSB
#define MAX31856_LTCBH_REG 0x0C ///< Linearized TC Temperature, Byte 2
#define MAX31856_LTCBM_REG 0x0D ///< Linearized TC Temperature, Byte 1
#define MAX31856_LTCBL_REG 0x0E ///< Linearized TC Temperature, Byte 0
#define MAX31856_SR_REG 0x0F    ///< Fault Status Register

#define MAX31856_FAULT_CJRANGE                                                 \
  0x80 ///< Fault status Cold Junction Out-of-Range flag
#define MAX31856_FAULT_TCRANGE                                                 \
  0x40 ///< Fault status Thermocouple Out-of-Range flag
#define MAX31856_FAULT_CJHIGH                                                  \
  0x20 ///< Fault status Cold-Junction High Fault flag
#define MAX31856_FAULT_CJLOW 0x10 ///< Fault status Cold-Junction Low Fault flag
#define MAX31856_FAULT_TCHIGH                                                  \
  0x08 ///< Fault status Thermocouple Temperature High Fault flag
#define MAX31856_FAULT_TCLOW                                                   \
  0x04 ///< Fault status Thermocouple Temperature Low Fault flag
#define MAX31856_FAULT_OVUV                                                    \
  0x02 ///< Fault status Overvoltage or Undervoltage Input Fault flag
#define MAX31856_FAULT_OPEN                                                    \
  0x01 ///< Fault status Thermocouple Open-Circuit Fault flag
#define SPI_DELAY  0xff

extern bool initialized;

/** Noise filtering options enum. Use with setNoiseFilter() */
typedef enum {
  MAX31856_NOISE_FILTER_50HZ,
  MAX31856_NOISE_FILTER_60HZ
} max31856_noise_filter_t;

/** Multiple types of thermocouples supported */
typedef enum {
  MAX31856_TCTYPE_B  = 0b0000,
  MAX31856_TCTYPE_E  = 0b0001,
  MAX31856_TCTYPE_J  = 0b0010,
  MAX31856_TCTYPE_K  = 0b0011,
  MAX31856_TCTYPE_N  = 0b0100,
  MAX31856_TCTYPE_R  = 0b0101,
  MAX31856_TCTYPE_S  = 0b0110,
  MAX31856_TCTYPE_T  = 0b0111,
  MAX31856_VMODE_G8  = 0b1000,
  MAX31856_VMODE_G32 = 0b1100,
} max31856_thermocoupletype_t;

/** Temperature conversion mode */
typedef enum {
  MAX31856_ONESHOT,
  MAX31856_ONESHOT_NOWAIT,
  MAX31856_CONTINUOUS
} max31856_conversion_mode_t;

bool begin(void);
bool conversionComplete(void);
uint8_t  readFault(void);
uint8_t  readRegister8(uint8_t addr);
uint16_t readRegister16(uint8_t addr);
uint32_t readRegister24(uint8_t addr);
max31856_conversion_mode_t getConversionMode(void);
max31856_thermocoupletype_t getThermocoupleType(void);
float readCJTemperature(void);
float readThermocoupleTemperature(void);
void writeRegister8(uint8_t addr, uint8_t reg);
void setConversionMode(max31856_conversion_mode_t mode);
void setThermocoupleType(max31856_thermocoupletype_t type);
void triggerOneShot(void);
void setTempFaultThreshholds(float flow, float fhigh);
void setColdJunctionFaultThreshholds(int8_t low, int8_t high);
void setNoiseFilter(max31856_noise_filter_t noiseFilter);
void writeRegister8(uint8_t addr, uint8_t reg);
void readRegisterN(uint8_t addr, uint8_t buffer[], uint8_t n);


#endif // MAX31856_H
Are you sure want to unlock this post?
Unlock left : 0
Are you sure want to cancel subscription?
-
00:00
00:00
Update Required Flash plugin
-
00:00
00:00