Skip to content

Commit 5ca1e30

Browse files
set temp resolution to 11 bits
1 parent 24973ee commit 5ca1e30

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

src/Monitors/TempMonitor.cpp

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,30 @@
22

33
TempMonitor::TempMonitor()
44
{
5+
Wire.beginTransmission(constants::temperature::i2c_address);
6+
Wire.write(0xE7);
7+
Wire.endTransmission();
8+
9+
Wire.requestFrom(constants::temperature::i2c_address, 1);
10+
11+
if (Wire.available() == 1) {
12+
uint8_t user_register = Wire.read();
13+
user_register = user_register | 0x81;
14+
15+
Wire.beginTransmission(constants::temperature::i2c_address);
16+
Wire.write(0xE6);
17+
Wire.write(user_register);
18+
Wire.endTransmission();
19+
}
520
}
621

722
void TempMonitor::execute()
823
{
9-
// Start I2C transmit
1024
Wire.beginTransmission(constants::temperature::i2c_address);
1125
// Select no hold master
1226
Wire.write(0xF3);
1327
Wire.endTransmission();
14-
delay(300); // TODO: Look at this delay (for real)
28+
delay(15);
1529

1630
// Request 2 bytes of data
1731
Wire.requestFrom(constants::temperature::i2c_address, 2);
@@ -22,6 +36,6 @@ void TempMonitor::execute()
2236
}
2337

2438
// Convert the data
25-
uint32_t rawtemp = (data[0] * 256 + data[1]) & 0xFFFC;
26-
sfr::temperature::temp_c = -46.85 + (175.72 * (rawtemp / 65536.0));
39+
uint32_t raw_temp = (data[0] * 256 + data[1]) & 0xFFFC;
40+
sfr::temperature::temp_c = -46.85 + (175.72 * (raw_temp / 65536.0));
2741
}

0 commit comments

Comments
 (0)