cancel
Showing results for 
Search instead for 
Did you mean: 

Cannot read samples from LSM6DSL sensor

saarpartush
Visitor

Hi, 

 

I am using LSM6DSL accelerometer sensor.

I have configure it to use acc only, +-16g, @27Hz, and using FIFO.

Here is the configuration I am doing:

uint8_t val = 0x04;
    err = lsm6dsl_write_reg(p_ctx, LSM6DSL_CTRL3_C, &val, 1);
    val = 0x24;
    err = lsm6dsl_write_reg(p_ctx, LSM6DSL_CTRL1_XL, &val, 1);
    val = 0x0;
    err = lsm6dsl_write_reg(p_ctx, LSM6DSL_CTRL2_G, &val, 1);
    val = 0x0;
    err = lsm6dsl_write_reg(p_ctx, LSM6DSL_FIFO_CTRL1, &val, 1);
    val = 0x0;
    err = lsm6dsl_write_reg(p_ctx, LSM6DSL_FIFO_CTRL2, &val, 1);
    val = 0x09;
    err = lsm6dsl_write_reg(p_ctx, LSM6DSL_FIFO_CTRL3, &val, 1);
    val = 0x0;
    err = lsm6dsl_write_reg(p_ctx, LSM6DSL_FIFO_CTRL4, &val, 1);
    val = 0x16;
    err = lsm6dsl_write_reg(p_ctx, LSM6DSL_FIFO_CTRL5, &val, 1);
    val = 0xF0;
    err = lsm6dsl_write_reg(p_ctx, 0x18, &val, 1);
    val = 0x00;
    err = lsm6dsl_write_reg(p_ctx, 0x19, &val, 1);
 
After that I am reading the fifo level:
 
ret = lsm6dsl_read_reg(ctx, LSM6DSL_FIFO_STATUS1, (uint8_t*)&fifo_status1, 1);
  if(ret == 0) {
    ret = lsm6dsl_read_reg(ctx, LSM6DSL_FIFO_STATUS2, (uint8_t*)&fifo_status2, 1);
    if(ret == 0) {
      *val = (uint8_t)fifo_status1.diff_fifo | ((uint16_t)((uint8_t)fifo_status2.diff_fifo & 0x07) << 8);
    }
  }
If the fiflo level id greater then 0, I am reading the FIFO output register:
 
ret = lsm6dsl_read_reg(ctx, LSM6DSL_FIFO_DATA_OUT_L, buff, 6);
 
But the reading iss always 0.
 
What am I doing wrong?
 
Thanks.

Edited to apply source code formatting - please see How to insert source code for future reference.

0 REPLIES 0