cancel
Showing results for 
Search instead for 
Did you mean: 

LSM6DSM Interrupt Confusion

VictorV
Associate

Hi Everyone,

I am having issues configuring INT1. I have attached my current configuration.

The init code looks like this:

    /*
     *  Restore default configuration.
     */
    lsm6dsm_reset_set(&accel_ctx, PROPERTY_ENABLE);
    do {
      lsm6dsm_reset_get(&accel_ctx, &rst);
    } while (rst);
<snip>
    /*
     * Set interrupt routing
     */
    lsm6dsm_int1_route_t intRouting = {
                                       .int1_fth     = 1,
                                       .int1_drdy_xl = 1,
    };
 
    lsm6dsm_pin_int1_route_set(&accel_ctx, intRouting);
 
    /*
     * Set interrupt output to active low
     */
    lsm6dsm_pin_polarity_set(&accel_ctx, LSM6DSM_ACTIVE_HIGH);

At the end of the reset operation (line 8) the INT1 pin is LOW. At the completion of

setting the pin routing (line17) INT1 is HIGH. At the completion of setting the pin

polarity (line 22) INT1 remains HIGH. Does that mean that data is already ready?

At this point the data rate has not yet been set so I was not expecting data to be

available at this point.

Victor

1 REPLY 1
Miroslav BATEK
ST Employee

It is strange, I should not behave like this. Moreover I'm not able to replicate this behavior.

Can you try to read output data and check if the interrupt goes to LOW?