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; }
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; }
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; }
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; }