Exemplo n.º 1
0
err_t adxl345GetDataRate(adxl345_dataRate_t *dataRate)
{
  uint8_t results;
  ASSERT_STATUS(adxl345Read8(ADXL345_REG_BW_RATE, &results));
  *dataRate = (adxl345_dataRate_t)(results & 0x0F);

  return ERROR_NONE;
}
Exemplo n.º 2
0
err_t adxl345GetRange(adxl345_range_t *range)
{
  uint8_t results;
  ASSERT_STATUS(adxl345Read8(ADXL345_REG_DATA_FORMAT, &results));
  *range = (adxl345_range_t)(results & 0x03);

  return ERROR_NONE;
}
Exemplo n.º 3
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;
}
Exemplo n.º 4
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;
}
Exemplo n.º 5
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;
}