103 lines
2.2 KiB
C++
103 lines
2.2 KiB
C++
|
|
/*
|
|||
|
|
* ADT7310.h
|
|||
|
|
*
|
|||
|
|
* Created on: 27 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 2019 <EFBFBD>.
|
|||
|
|
* Author: user
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef SOURCE_DRIVER_CHIPSET_ADT7310_H_
|
|||
|
|
#define SOURCE_DRIVER_CHIPSET_ADT7310_H_
|
|||
|
|
|
|||
|
|
|
|||
|
|
#include "PackagerADT7310.hh"
|
|||
|
|
#include "../SerialPortAdapter.hpp"
|
|||
|
|
|
|||
|
|
namespace driver { namespace chipset { namespace ADT7310 {
|
|||
|
|
|
|||
|
|
typedef PackagerADT7310 Packager;
|
|||
|
|
typedef uint16_t Latency;
|
|||
|
|
|
|||
|
|
typedef SerialPortAdapter<PackagerADT7310::TemperaturePackager::Frame, Latency, false> SerialPortRegister;
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
struct ControlRegistersPairedAcronims {
|
|||
|
|
enum Acronims {
|
|||
|
|
STATUS = 0x00, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
CONFIG = 0x01, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
TEMP = 0x02, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
ID = 0x03, //
|
|||
|
|
T_CRIT = 0x04, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
T_HYST = 0x05, //
|
|||
|
|
T_HIGH = 0x06, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
T_LOW = 0x07, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
union StatusReg {
|
|||
|
|
uint16_t all;
|
|||
|
|
struct {
|
|||
|
|
uint16_t : 3;
|
|||
|
|
uint16_t t_low : 1;
|
|||
|
|
uint16_t t_high : 1;
|
|||
|
|
uint16_t t_crit : 1;
|
|||
|
|
uint16_t nrdy : 1;
|
|||
|
|
} bit;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
enum IntCtMode {
|
|||
|
|
interrupt_mode = 0,
|
|||
|
|
comparator_mode
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
enum OperationMode {
|
|||
|
|
continuous = 0,
|
|||
|
|
one_shot,
|
|||
|
|
sps,
|
|||
|
|
shut_down
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
union ConfigReg {
|
|||
|
|
uint16_t all;
|
|||
|
|
struct {
|
|||
|
|
uint16_t max_fault : 2;
|
|||
|
|
uint16_t ct_polarity : 1;
|
|||
|
|
uint16_t int_polarity : 1;
|
|||
|
|
IntCtMode int_ct_mode : 1;
|
|||
|
|
OperationMode op_mode : 2;
|
|||
|
|
} bit;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADT7310
|
|||
|
|
struct Parameters {
|
|||
|
|
typedef uint16_t OptionRegister;
|
|||
|
|
static const unsigned int allowed_options = 1;
|
|||
|
|
|
|||
|
|
enum AllowedRegisters {
|
|||
|
|
CONFIG,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
OptionRegister option[allowed_options];
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
union TempReg {
|
|||
|
|
uint16_t all;
|
|||
|
|
struct {
|
|||
|
|
uint16_t t_low : 1;
|
|||
|
|
uint16_t t_high : 1;
|
|||
|
|
uint16_t t_crit : 1;
|
|||
|
|
uint16_t temp : 12;
|
|||
|
|
uint16_t sign : 1;
|
|||
|
|
} bit;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
inline float toFloat(const TempReg & temp) {
|
|||
|
|
|
|||
|
|
const float k = 0.5;
|
|||
|
|
return ( static_cast<float>( temp.bit.temp ) + (-2) * static_cast<float>( temp.bit.temp ) * temp.bit.sign ) * k;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
} }}
|
|||
|
|
|
|||
|
|
#endif /* SOURCE_DRIVER_CHIPSET_ADT7310_H_ */
|