MCPcopy Create free account
hub / github.com/RobTillaart/Arduino / read

Method read

libraries/MS5611/MS5611.cpp:120–179  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

118
119
120int MS5611::read(uint8_t bits)
121{
122 // VARIABLES NAMES BASED ON DATASHEET
123 // ALL MAGIC NUMBERS ARE FROM DATASHEET
124
125 convert(MS5611_CMD_CONVERT_D1, bits);
126 if (_result) return _result;
127 // NOTE: D1 and D2 seem reserved in MBED (NANO BLE)
128 uint32_t _D1 = readADC();
129 if (_result) return _result;
130
131 convert(MS5611_CMD_CONVERT_D2, bits);
132 if (_result) return _result;
133 uint32_t _D2 = readADC();
134 if (_result) return _result;
135
136 // Serial.println(_D1);
137 // Serial.println(_D2);
138
139 // TEST VALUES - comment lines above
140 // uint32_t _D1 = 9085466;
141 // uint32_t _D2 = 8569150;
142
143 // TEMP & PRESS MATH - PAGE 7/20
144 float dT = _D2 - C[5];
145 _temperature = 2000 + dT * C[6];
146
147 float offset = C[2] + dT * C[4];
148 float sens = C[1] + dT * C[3];
149
150 if (_compensation)
151 {
152 // SECOND ORDER COMPENSATION - PAGE 8/20
153 // COMMENT OUT < 2000 CORRECTION IF NOT NEEDED
154 // NOTE TEMPERATURE IS IN 0.01 C
155 if (_temperature < 2000)
156 {
157 float T2 = dT * dT * 4.6566128731E-10;
158 float t = (_temperature - 2000) * (_temperature - 2000);
159 float offset2 = 2.5 * t;
160 float sens2 = 1.25 * t;
161 // COMMENT OUT < -1500 CORRECTION IF NOT NEEDED
162 if (_temperature < -1500)
163 {
164 t = (_temperature + 1500) * (_temperature + 1500);
165 offset2 += 7 * t;
166 sens2 += 5.5 * t;
167 }
168 _temperature -= T2;
169 offset -= offset2;
170 sens -= sens2;
171 }
172 // END SECOND ORDER COMPENSATION
173 }
174
175 _pressure = (_D1 * sens * 4.76837158205E-7 - offset) * 3.051757813E-5;
176
177 _lastRead = millis();

Callers 4

_readMethod · 0.45
readPromMethod · 0.45
readADCMethod · 0.45
unittestFunction · 0.45

Calls

no outgoing calls

Tested by 1

unittestFunction · 0.36