Skip to content

Commit d9745d0

Browse files
authored
Merge pull request #4 from OAkyildiz/master
Fixed MCP3X21treating 3221 as 10-bit instead of 12
2 parents c575d5d + c510b22 commit d9745d0

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

MCP3X21.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ void MCP3X21::init() {
4141
_i2c = &Wire;
4242
}
4343

44-
uint16_t MCP3X21::read() {
44+
uint16_t MCP3021::read() {
4545
_i2c->requestFrom(_address, 2U);
4646

4747
if (_i2c->available() == 2) {
@@ -51,6 +51,16 @@ uint16_t MCP3X21::read() {
5151
return 0xFFFF;
5252
}
5353

54+
uint16_t MCP3221::read() {
55+
_i2c->requestFrom(_address, 2U);
56+
57+
if (_i2c->available() == 2) {
58+
return ((_i2c->read() << 8) | _i2c->read());
59+
}
60+
61+
return 0xFFFF;
62+
}
63+
5464
MCP3021::MCP3021(uint8_t slave_adr):
5565
MCP3X21(slave_adr) {
5666
}

MCP3X21.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,24 @@ class MCP3X21 {
3333
~MCP3X21(void);
3434
void init(TwoWire * i2c_obj);
3535
void init();
36-
uint16_t read();
37-
36+
3837
protected:
38+
uint16_t read();
3939
TwoWire * _i2c;
4040
const uint8_t _address;
41+
4142
};
4243

4344
class MCP3021 : public MCP3X21 {
4445
public:
46+
uint16_t read();
4547
explicit MCP3021(uint8_t slave_adr = MCP3X21_DEFAULT_ADDRESS);
4648
uint16_t toVoltage(uint16_t data, uint32_t vref);
4749
};
4850

4951
class MCP3221 : public MCP3X21 {
5052
public:
53+
uint16_t read();
5154
explicit MCP3221(uint8_t slave_adr = MCP3X21_DEFAULT_ADDRESS);
5255
uint16_t toVoltage(uint16_t data, uint32_t vref);
5356
};

0 commit comments

Comments
 (0)