Ejemplo n.º 1
0
/*---------------------------------------------------------------------------*/
static void
adxl346_init(void)
{
  uint8_t config[2];

  config[0] = ADXL346_BW_RATE_ADDR;
  config[1] = (ADXL346_BW_RATE_RATE(6));
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));

  config[0] = ADXL346_DATA_FORMAT_ADDR;
  config[1] = (ADXL346_USER_CONFIGURATION);
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));

  config[0] = ADXL346_POWER_CTL_ADDR;
  config[1] = (ADXL346_POWER_CTL_MEASURE);
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));
}
Ejemplo n.º 2
0
/*---------------------------------------------------------------------------*/
void
adxl346_init(void)
{
  uint8_t config[2];

  config[0] = ADXL346_BW_RATE_ADDR;
  config[1] = (ADXL346_BW_RATE_RATE(11));
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));

  config[0] = ADXL346_DATA_FORMAT_ADDR;
  config[1] = (ADXL346_DATA_FORMAT_SELF_TEST |
               ADXL346_DATA_FORMAT_FULL_RES |
               ADXL346_DATA_FORMAT_RANGE_PM_16g);
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));

  config[0] = ADXL346_POWER_CTL_ADDR;
  config[1] = (ADXL346_POWER_CTL_MEASURE);
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));
}
Ejemplo n.º 3
0
/*---------------------------------------------------------------------------*/
void
bme280_arch_i2c_write_mem(uint8_t addr, uint8_t reg, uint8_t value)
{
  uint8_t buf[2];

  buf[0] = reg;
  buf[1] = value;

  i2c_master_enable();
  i2c_burst_send(addr, buf, 2);
}
Ejemplo n.º 4
0
/*---------------------------------------------------------------------------*/
static void
adxl346_calibrate_offset(void)
{
  int32_t accum_x = 0;
  int32_t accum_y = 0;
  int32_t accum_z = 0;
  uint8_t config[2];
  int8_t offset;

  config[0] = ADXL346_OFSX_ADDR;
  config[1] = 0;
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));
  config[0] = ADXL346_OFSY_ADDR;
  config[1] = 0;
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));
  config[0] = ADXL346_OFSZ_ADDR;
  config[1] = 0;
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));

  uint16_t i;
  for(i = 0; i < 100; i++) {
    uint16_t x, y, z;

    x = adxl346_read_accel(ADXL346_DATAX0_ADDR, ADXL346_DATAX1_ADDR);
    accum_x += x;

    y = adxl346_read_accel(ADXL346_DATAY0_ADDR, ADXL346_DATAY1_ADDR);
    accum_y += y;

    z = adxl346_read_accel(ADXL346_DATAZ0_ADDR, ADXL346_DATAZ1_ADDR);
    accum_z += z;
  }

  offset = (64 * accum_x) / 25600;
  config[0] = ADXL346_OFSX_ADDR;
  config[1] = -offset;
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));
  PRINTF("ADXL346: X calibration offset is %d\n", offset);

  offset = (64 * accum_y) / 25600;
  config[0] = ADXL346_OFSY_ADDR;
  config[1] = -offset;
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));
  PRINTF("ADXL346: Y calibration offset is %d\n", offset);

  offset = (64 * accum_z) / 25600;
  config[0] = ADXL346_OFSZ_ADDR;
  config[1] = -offset;
  i2c_burst_send(ADXL346_ADDRESS, config, sizeof(config));
  PRINTF("ADXL346: Z calibration offset is %d\n", offset);
}