diff --git a/src/l3gd20/l3gd20.cxx b/src/l3gd20/l3gd20.cxx index a529aefd..7c3c36d7 100755 --- a/src/l3gd20/l3gd20.cxx +++ b/src/l3gd20/l3gd20.cxx @@ -134,11 +134,13 @@ L3GD20::L3GD20(int bus, int addr) // check ChipID uint8_t cid = getChipID(); - if (cid != L3GD20_DEFAULT_CHIP_ID) + if (!(cid == L3GD20_DEFAULT_CHIP_ID || cid == L3GD20H_DEFAULT_CHIP_ID)) { throw std::runtime_error(std::string(__FUNCTION__) + - ": invalid Chip ID: expected " + ": Invalid Chip ID: expected " + std::to_string(L3GD20_DEFAULT_CHIP_ID) + + " or " + + std::to_string(L3GD20H_DEFAULT_CHIP_ID) + ", got " + std::to_string(int(cid))); return; diff --git a/src/l3gd20/l3gd20.hpp b/src/l3gd20/l3gd20.hpp index de9c86f9..f2271001 100644 --- a/src/l3gd20/l3gd20.hpp +++ b/src/l3gd20/l3gd20.hpp @@ -35,6 +35,8 @@ // if SDO tied to GND #define L3GD20_DEFAULT_I2C_ADDR 0x6a #define L3GD20_DEFAULT_CHIP_ID 0xd4 +// the 'H' variant uses a different chip id +#define L3GD20H_DEFAULT_CHIP_ID 0xd7 namespace upm {