@@ -6,186 +6,186 @@ MAX31865Class::MAX31865Class(PinName cs) : _spi(SPI), _cs(cs) {
6
6
static SPISettings _spiSettings (1000000 , MSBFIRST, SPI_MODE1);
7
7
8
8
bool MAX31865Class::begin (int wires) {
9
- _spi.begin ();
9
+ _spi.begin ();
10
10
11
- pinMode (_cs, OUTPUT);
12
- digitalWrite (_cs, HIGH);
11
+ pinMode (_cs, OUTPUT);
12
+ digitalWrite (_cs, HIGH);
13
13
14
- // sets 2 or 4 wire
15
- if (wires == THREE_WIRE) {
16
- writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) | MAX31856_CONFIG_3_WIRE));
17
- } else {
18
- writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_WIRE_MASK));
19
- }
14
+ // sets 2 or 4 wire
15
+ if (wires == THREE_WIRE) {
16
+ writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) | MAX31856_CONFIG_3_WIRE));
17
+ } else {
18
+ writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_WIRE_MASK));
19
+ }
20
20
21
- // disable bias
22
- writeByte (MAX31856_CONFIG_REG, readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_BIAS_MASK);
21
+ // disable bias
22
+ writeByte (MAX31856_CONFIG_REG, readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_BIAS_MASK);
23
23
24
- // disable auto convert mode
25
- writeByte (MAX31856_CONFIG_REG, readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_CONV_MODE_MASK);
24
+ // disable auto convert mode
25
+ writeByte (MAX31856_CONFIG_REG, readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_CONV_MODE_MASK);
26
26
27
- // clear fault
28
- writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_CLEAR_FAULT_CYCLE)| MAX31856_CONFIG_CLEAR_FAULT);
27
+ // clear fault
28
+ writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_CLEAR_FAULT_CYCLE)| MAX31856_CONFIG_CLEAR_FAULT);
29
29
30
- // set filter frequency
31
- writeByte (MAX31856_CONFIG_REG, readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_60_50_HZ_FILTER_MASK);
30
+ // set filter frequency
31
+ writeByte (MAX31856_CONFIG_REG, readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_60_50_HZ_FILTER_MASK);
32
32
33
- return true ;
33
+ return true ;
34
34
}
35
35
36
36
void MAX31865Class::clearFault (void ) {
37
- writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_CLEAR_FAULT_CYCLE) | MAX31856_CONFIG_CLEAR_FAULT);
37
+ writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_CLEAR_FAULT_CYCLE) | MAX31856_CONFIG_CLEAR_FAULT);
38
38
}
39
39
40
40
uint8_t MAX31865Class::readFault (void ) {
41
- return readByte (MAX31856_FAULT_STATUS_REG);
41
+ return readByte (MAX31856_FAULT_STATUS_REG);
42
42
}
43
43
44
44
bool MAX31865Class::getHighThresholdFault (uint8_t fault) {
45
- if (fault & MAX31865_FAULT_HIGH_THRESH) {
46
- return true ;
47
- }
48
- return false ;
45
+ if (fault & MAX31865_FAULT_HIGH_THRESH) {
46
+ return true ;
47
+ }
48
+ return false ;
49
49
}
50
50
51
51
bool MAX31865Class::getLowThresholdFault (uint8_t fault) {
52
- if (fault & MAX31865_FAULT_LOW_THRESH) {
53
- return true ;
54
- }
55
- return false ;
52
+ if (fault & MAX31865_FAULT_LOW_THRESH) {
53
+ return true ;
54
+ }
55
+ return false ;
56
56
}
57
57
58
58
bool MAX31865Class::getLowREFINFault (uint8_t fault) {
59
- if (fault & MAX31865_FAULT_LOW_REFIN) {
60
- return true ;
61
- }
62
- return false ;
59
+ if (fault & MAX31865_FAULT_LOW_REFIN) {
60
+ return true ;
61
+ }
62
+ return false ;
63
63
}
64
64
65
65
bool MAX31865Class::getHighREFINFault (uint8_t fault) {
66
- if (fault & MAX31865_FAULT_HIGH_REFIN) {
67
- return true ;
68
- }
69
- return false ;
66
+ if (fault & MAX31865_FAULT_HIGH_REFIN) {
67
+ return true ;
68
+ }
69
+ return false ;
70
70
}
71
71
72
72
bool MAX31865Class::getLowRTDINFault (uint8_t fault) {
73
- if (fault & MAX31865_FAULT_LOW_RTDIN) {
74
- return true ;
75
- }
76
- return false ;
73
+ if (fault & MAX31865_FAULT_LOW_RTDIN) {
74
+ return true ;
75
+ }
76
+ return false ;
77
77
}
78
78
79
79
bool MAX31865Class::getVoltageFault (uint8_t fault) {
80
- if (fault & MAX31865_FAULT_OVER_UNDER_VOLTAGE) {
81
- return true ;
82
- }
83
- return false ;
80
+ if (fault & MAX31865_FAULT_OVER_UNDER_VOLTAGE) {
81
+ return true ;
82
+ }
83
+ return false ;
84
84
}
85
85
86
86
float MAX31865Class::readTemperature (float RTDnominal, float refResistor) {
87
- float Z1, Z2, Z3, Z4, Rt, temp;
87
+ float Z1, Z2, Z3, Z4, Rt, temp;
88
88
89
- Rt = readRTD ();
90
- Rt /= 32768 ;
91
- Rt *= refResistor;
89
+ Rt = readRTD ();
90
+ Rt /= 32768 ;
91
+ Rt *= refResistor;
92
92
93
- Z1 = -RTD_A;
94
- Z2 = RTD_A * RTD_A - (4 * RTD_B);
95
- Z3 = (4 * RTD_B) / RTDnominal;
96
- Z4 = 2 * RTD_B;
93
+ Z1 = -RTD_A;
94
+ Z2 = RTD_A * RTD_A - (4 * RTD_B);
95
+ Z3 = (4 * RTD_B) / RTDnominal;
96
+ Z4 = 2 * RTD_B;
97
97
98
- temp = Z2 + (Z3 * Rt);
99
- temp = (sqrt (temp) + Z1) / Z4;
98
+ temp = Z2 + (Z3 * Rt);
99
+ temp = (sqrt (temp) + Z1) / Z4;
100
100
101
- if (temp >= 0 )
102
- return temp;
101
+ if (temp >= 0 )
102
+ return temp;
103
103
104
- // ugh.
105
- Rt /= RTDnominal;
106
- Rt *= 100 ; // normalize to 100 ohm
104
+ // ugh.
105
+ Rt /= RTDnominal;
106
+ Rt *= 100 ; // normalize to 100 ohm
107
107
108
- float rpoly = Rt;
108
+ float rpoly = Rt;
109
109
110
- temp = -242.02 ;
111
- temp += 2.2228 * rpoly;
112
- rpoly *= Rt; // square
113
- temp += 2.5859e-3 * rpoly;
114
- rpoly *= Rt; // ^3
115
- temp -= 4.8260e-6 * rpoly;
116
- rpoly *= Rt; // ^4
117
- temp -= 2.8183e-8 * rpoly;
118
- rpoly *= Rt; // ^5
119
- temp += 1.5243e-10 * rpoly;
110
+ temp = -242.02 ;
111
+ temp += 2.2228 * rpoly;
112
+ rpoly *= Rt; // square
113
+ temp += 2.5859e-3 * rpoly;
114
+ rpoly *= Rt; // ^3
115
+ temp -= 4.8260e-6 * rpoly;
116
+ rpoly *= Rt; // ^4
117
+ temp -= 2.8183e-8 * rpoly;
118
+ rpoly *= Rt; // ^5
119
+ temp += 1.5243e-10 * rpoly;
120
120
121
- return temp;
121
+ return temp;
122
122
}
123
123
124
124
uint32_t MAX31865Class::readRTD () {
125
- // clear fault
126
- writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_CLEAR_FAULT_CYCLE) | MAX31856_CONFIG_CLEAR_FAULT);
125
+ // clear fault
126
+ writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) & MAX31856_CONFIG_CLEAR_FAULT_CYCLE) | MAX31856_CONFIG_CLEAR_FAULT);
127
127
128
- // enable bias
129
- writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) | MAX31856_CONFIG_BIAS_ON));
130
- delay (10 );
128
+ // enable bias
129
+ writeByte (MAX31856_CONFIG_REG, (readByte (MAX31856_CONFIG_REG) | MAX31856_CONFIG_BIAS_ON));
130
+ delay (10 );
131
131
132
- // ONE shot cOnfIg and make readings change with readByte
133
- writeByte (MAX31856_CONFIG_REG, readByte (MAX31856_CONFIG_REG) | MAX31856_CONFIG_ONE_SHOT);
134
- delay (65 );
132
+ // ONE shot cOnfIg and make readings change with readByte
133
+ writeByte (MAX31856_CONFIG_REG, readByte (MAX31856_CONFIG_REG) | MAX31856_CONFIG_ONE_SHOT);
134
+ delay (65 );
135
135
136
- // readings bytes
137
- uint16_t read = (readBytes (MAX31856_RTD_MSB_REG));
138
- read = read >>1 ;
136
+ // readings bytes
137
+ uint16_t read = (readBytes (MAX31856_RTD_MSB_REG));
138
+ read = read >>1 ;
139
139
140
- // disable bias
141
- writeByte (MAX31856_CONFIG_REG, readByte (MAX31856_CONFIG_REG) & (MAX31856_CONFIG_BIAS_MASK));
140
+ // disable bias
141
+ writeByte (MAX31856_CONFIG_REG, readByte (MAX31856_CONFIG_REG) & (MAX31856_CONFIG_BIAS_MASK));
142
142
143
- return read ;
143
+ return read ;
144
144
}
145
145
146
146
uint8_t MAX31865Class::readByte (uint8_t addr) {
147
- addr &= 0x7F ;
148
- uint8_t read = 0 ;
147
+ addr &= 0x7F ;
148
+ uint8_t read = 0 ;
149
149
150
- digitalWrite (_cs, LOW);
150
+ digitalWrite (_cs, LOW);
151
151
152
- _spi.beginTransaction (_spiSettings);
153
- _spi.transfer (addr);
154
- _spi.transfer (&read ,1 );
155
- _spi.endTransaction ();
152
+ _spi.beginTransaction (_spiSettings);
153
+ _spi.transfer (addr);
154
+ _spi.transfer (&read ,1 );
155
+ _spi.endTransaction ();
156
156
157
- digitalWrite (_cs, HIGH);
157
+ digitalWrite (_cs, HIGH);
158
158
159
- return read ;
159
+ return read ;
160
160
}
161
161
162
162
uint16_t MAX31865Class::readBytes (uint8_t addr) {
163
- uint16_t read = 0x00 ;
163
+ uint16_t read = 0x00 ;
164
164
165
- digitalWrite (_cs, LOW);
165
+ digitalWrite (_cs, LOW);
166
166
167
- _spi.beginTransaction (_spiSettings);
168
- _spi.transfer (addr);
169
- for (int i = 0 ; i < 2 ; i++) {
170
- read = read << 8 ;
171
- read |= _spi.transfer (0 );
172
- }
173
- _spi.endTransaction ();
167
+ _spi.beginTransaction (_spiSettings);
168
+ _spi.transfer (addr);
169
+ for (int i = 0 ; i < 2 ; i++) {
170
+ read = read << 8 ;
171
+ read |= _spi.transfer (0 );
172
+ }
173
+ _spi.endTransaction ();
174
174
175
- digitalWrite (_cs, HIGH);
175
+ digitalWrite (_cs, HIGH);
176
176
177
- return read ;
177
+ return read ;
178
178
}
179
179
180
180
void MAX31865Class::writeByte (uint8_t addr, uint8_t data) {
181
- addr |= 0x80 ; // make sure top bit is set
182
- uint8_t buffer[2 ] = {addr, data};
181
+ addr |= 0x80 ; // make sure top bit is set
182
+ uint8_t buffer[2 ] = {addr, data};
183
183
184
- digitalWrite (_cs, LOW);
184
+ digitalWrite (_cs, LOW);
185
185
186
- _spi.beginTransaction (_spiSettings);
187
- _spi.transfer (buffer,2 );
188
- _spi.endTransaction ();
186
+ _spi.beginTransaction (_spiSettings);
187
+ _spi.transfer (buffer,2 );
188
+ _spi.endTransaction ();
189
189
190
- digitalWrite (_cs, HIGH);
190
+ digitalWrite (_cs, HIGH);
191
191
}
0 commit comments