lsm6dsl Step counter - Pedometer. How to get correct data? I get interrupt every small movement detection. My sensor work on 52 HZ I set thresholds and read data(see blow)
Thresholds:
lsm6dsl_****_debounce_steps_set(&IMU_Ctx, imuParams.debounce_steps);
lsm6dsl_****_timeout_set(&IMU_Ctx, imuParams.debounce_timeout);
lsm6dsl_****_threshold_set(&IMU_Ctx, imuParams.step_thd);
function tp get cstep counter:
uint16_t IMU_API_ReadAndClearStepsCounter(void)
{
uint16_t steps[2];
int tries = 2;
// do consensual decision
do {
lsm6dsl_read_reg(&IMU_Ctx, LSM6DSL_STEP_COUNTER_L, (uint8_t*)&steps[0], sizeof(uint16_t));
lsm6dsl_read_reg(&IMU_Ctx, LSM6DSL_STEP_COUNTER_L, (uint8_t*)&steps[1], sizeof(uint16_t));
tries--;
}while(tries && (steps[0] != steps[1]));
if(steps[0] !=steps[1]) {
steps[0] = (uint16_t)-1;
}
// clear steps counter
lsm6dsl_****_step_reset_set(&IMU_Ctx, 1); // reset step counter
lsm6dsl_****_step_reset_set(&IMU_Ctx, 0); // reset step counter
return steps[0];
}
