Adafruit_ISM330DHCX.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*!
  2. * @file Adafruit_ISM330DHCX.cpp Adafruit ISM330DHCX 6-DoF Accelerometer
  3. * and Gyroscope library
  4. *
  5. * Bryan Siepert for Adafruit Industries
  6. * BSD (see license.txt)
  7. */
  8. #include "Arduino.h"
  9. #include <Wire.h>
  10. #include "Adafruit_ISM330DHCX.h"
  11. /*!
  12. * @brief Instantiates a new ISM330DHCX class
  13. */
  14. Adafruit_ISM330DHCX::Adafruit_ISM330DHCX(void) {}
  15. bool Adafruit_ISM330DHCX::_init(int32_t sensor_id) {
  16. // make sure we're talking to the right chip
  17. if (chipID() != ISM330DHCX_CHIP_ID) {
  18. return false;
  19. }
  20. _sensorid_accel = sensor_id;
  21. _sensorid_gyro = sensor_id + 1;
  22. _sensorid_temp = sensor_id + 2;
  23. reset();
  24. // call base class _init()
  25. Adafruit_LSM6DS::_init(sensor_id);
  26. // set the Block Data Update bit
  27. // this prevents MSB/LSB data registers from being updated until both are read
  28. Adafruit_BusIO_Register ctrl3 = Adafruit_BusIO_Register(
  29. i2c_dev, spi_dev, ADDRBIT8_HIGH_TOREAD, LSM6DS_CTRL3_C);
  30. Adafruit_BusIO_RegisterBits bdu = Adafruit_BusIO_RegisterBits(&ctrl3, 1, 6);
  31. bdu.write(1);
  32. return true;
  33. }