Esempio n. 1
0
err_t adxl345SetDataRate(adxl345_dataRate_t dataRate)
{
  /* Note: The LOW_POWER bits are currently ignored and we always keep
     the device in 'normal' mode */
  ASSERT_STATUS(adxl345Write8(ADXL345_REG_BW_RATE, dataRate));

  return ERROR_NONE;
}
Esempio n. 2
0
error_t adxl345SetRange(adxl345_range_t range)
{
  uint8_t format;

  /* Red the data format register to preserve bits */
  ASSERT_STATUS(adxl345Read8(ADXL345_REG_DATA_FORMAT, &format));

  /* Update the data rate */
  format &= ~0x0F;
  format |= range;

  /* Write the register back to the IC */
  ASSERT_STATUS(adxl345Write8(ADXL345_REG_DATA_FORMAT, format));

  return ERROR_NONE;
}
Esempio n. 3
0
err_t adxl345SetRange(adxl345_range_t range)
{
  uint8_t format;

  /* Red the data format register to preserve bits */
  ASSERT_STATUS(adxl345Read8(ADXL345_REG_DATA_FORMAT, &format));

  /* Update the data rate */
  format &= ~0x0F;
  format |= range;

  /* Make sure that the FULL-RES bit is enabled for range scaling */
  format |= 0x08;

  /* Write the register back to the IC */
  ASSERT_STATUS(adxl345Write8(ADXL345_REG_DATA_FORMAT, format));

  return ERROR_NONE;
}
Esempio n. 4
0
err_t adxl345Init(void)
{
  uint8_t devid = 0x00;

  /* Initialise I2C */
  i2cInit(I2CMASTER);

  /* Ping the I2C device first to see if it exists! */
  ASSERT(i2cCheckAddress(ADXL345_ADDRESS), ERROR_I2C_DEVICENOTFOUND);

  /* Check device ID register to see if everything is properly connected */
  ASSERT_STATUS(adxl345Read8(ADXL345_REG_DEVID, &devid));
  if (devid != 0xE5)
  {
    return ERROR_I2C_DEVICENOTFOUND;
  }

  /* Enable measurements */
  ASSERT_STATUS(adxl345Write8(ADXL345_REG_POWER_CTL, 0x08));

  _adxl345Initialised = true;

  return ERROR_NONE;
}