Adafruit_LSM6DS3TRC.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*!
  2. * @file Adafruit_LSM6DS3TRC.cpp Adafruit LSM6DS3TR-C 6-DoF Accelerometer
  3. * and Gyroscope library
  4. *
  5. * Written by ladyada for Adafruit Industries
  6. * BSD (see license.txt)
  7. */
  8. #include "Arduino.h"
  9. #include <Wire.h>
  10. #include "Adafruit_LSM6DS3TRC.h"
  11. /*!
  12. * @brief Instantiates a new LSM6DS3TRC class
  13. */
  14. Adafruit_LSM6DS3TRC::Adafruit_LSM6DS3TRC(void) {}
  15. bool Adafruit_LSM6DS3TRC::_init(int32_t sensor_id) {
  16. // make sure we're talking to the right chip
  17. if (chipID() != LSM6DS3TRC_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. }
  34. /**************************************************************************/
  35. /*!
  36. @brief Enables and disables the pedometer function
  37. @param enable True to turn on the pedometer function, false to turn off
  38. */
  39. /**************************************************************************/
  40. void Adafruit_LSM6DS3TRC::enablePedometer(bool enable) {
  41. // enable or disable functionality
  42. Adafruit_BusIO_Register ctrl10 = Adafruit_BusIO_Register(
  43. i2c_dev, spi_dev, ADDRBIT8_HIGH_TOREAD, LSM6DS_CTRL10_C);
  44. Adafruit_BusIO_RegisterBits ped_en =
  45. Adafruit_BusIO_RegisterBits(&ctrl10, 1, 4);
  46. ped_en.write(enable);
  47. Adafruit_BusIO_RegisterBits func_en =
  48. Adafruit_BusIO_RegisterBits(&ctrl10, 1, 2);
  49. func_en.write(enable);
  50. resetPedometer();
  51. }
  52. /**************************************************************************/
  53. /*!
  54. @brief Enables and disables the I2C master bus pulllups.
  55. @param enable_pullups true to enable the I2C pullups, false to disable.
  56. */
  57. void Adafruit_LSM6DS3TRC::enableI2CMasterPullups(bool enable_pullups) {
  58. Adafruit_BusIO_Register master_config = Adafruit_BusIO_Register(
  59. i2c_dev, spi_dev, ADDRBIT8_HIGH_TOREAD, LSM6DS3TRC_MASTER_CONFIG);
  60. Adafruit_BusIO_RegisterBits i2c_master_pu_en =
  61. Adafruit_BusIO_RegisterBits(&master_config, 1, 3);
  62. i2c_master_pu_en.write(enable_pullups);
  63. }