LSM6DSO interface with MCU : Generation of wakeup/activity/single tap interrupt during double tap. Expected : Only double tap. Actual: wakeup/activity/single tap interrupts also along with double tap interrupt
Issue Summary:
Generation of wakeup/activity/single tap interrupt during double tap.
Expected : Only double tap.
Actual: wakeup/activity/single tap interrupts also along with double tap interrupt
please find the below Analysis for your reference.
Register Configurations for wakeup:
Wake-up Configuration Details :
1. Write 60h to CTRL1_XL // Turn on the accelerometer
// ODR_XL = 416 Hz, FS_XL = ±2 g
2. Write 00h to TAP_CFG0 // Disabled latch mode
Write 80h to TAP_CFG2 // Enable interrupt function
3. Write 60h to WAKE_UP_DUR // 3*ODR_time = 3*2.4 ms = 7.2 ms
4. Write 0Fh to WAKE_UP_THS // Set wake-up threshold ---- > 15*fs_xl/64 = 468.75 mg
5. Write 20h to MD1_CFG // Wake-up interrupt driven to INT1 pin
Double Tap Configuration Details :
1. Write 60h to CTRL1_XL // Turn on the accelerometer
// ODR_XL = 416 Hz, FS_XL = ±2 g
2. Write 0Eh to TAP_CFG0 // Enable tap detection on X, Y, Z-axis
3. Write 0Ch to TAP_CFG1 // Set X-axis threshold and axes priority
4. Write 8Ch to TAP_CFG2 // Set Y-axis threshold and enable interrupt
5. Write 0Ch to TAP_THS_6D // Set Z-axis threshold
6. Write 7Fh to INT_DUR2 // Set Duration, Quiet and Shock time windows
7. Write 80h to WAKE_UP_THS // Single-tap and double-tap enabled (SINGLE_DOUBLE_TAP = 1)
8. Write 08h to MD2_CFG // Double-tap interrupt driven to INT2 pin
Test Steps :
power on the board
Double tap on the board on the LSM6DSO board
Expected output :
Interrupt 1 signal should not generated and only Interrupt 2 signal should be generated, during Double tap
Actual Observation :
Two times Interrupt 1 signal also generated along with single interrupt 2 signal, during double tap (Totally 3 interrupt)
//...............................................................................................................//
Register Configuration for activity event:
Wake-up Configuration Details :
1. Write 60h to CTRL1_XL // Turn on the accelerometer
// ODR_XL = 416 Hz, FS_XL = ±2 g
2. Write 00h to TAP_CFG0 // Disabled latch mode
Write 80h to TAP_CFG2 // Enable interrupt function
3. Write 60h to WAKE_UP_DUR // 3*ODR_time = 3*2.4 ms = 7.2 ms
4. Write 0Fh to WAKE_UP_THS // Set wake-up threshold ---- > 15*fs_xl/64 = 468.75 mg
5. Write 80h to MD1_CFG // Routing of activity/inactivity recognition event on INT1
Double Tap Configuration Details :
1. Write 60h to CTRL1_XL // Turn on the accelerometer
// ODR_XL = 416 Hz, FS_XL = ±2 g
2. Write 0Eh to TAP_CFG0 // Enable tap detection on X, Y, Z-axis
3. Write 0Ch to TAP_CFG1 // Set X-axis threshold and axes priority
4. Write 8Ch to TAP_CFG2 // Set Y-axis threshold and enable interrupt
5. Write 0Ch to TAP_THS_6D // Set Z-axis threshold
6. Write 7Fh to INT_DUR2 // Set Duration, Quiet and Shock time windows
7. Write 80h to WAKE_UP_THS // Single-tap and double-tap enabled (SINGLE_DOUBLE_TAP = 1)
8. Write 08h to MD2_CFG // Double-tap interrupt driven to INT2 pin
Steps Followed:
power on the board
Initially Interrupt 1 signal generated without any touch on LSM6DSO board
Double tap on the LSM6DSO board.
Expected output :
Interrupt 1 signal should not be generated and only Interrupt 2 signal should be generated ,during Double tap
Actual Observation :
Two Activity(Interrupt 1) signal and one double tap (Interrupt 2) signal, during Double tap (Totally 3 interrupt)
//.................................................................................................................//
Register Configuration for single tap:
1. Write 60h to CTRL1_XL // Turn on the accelerometer
// ODR_XL = 416 Hz, FS_XL = ±2 g
2. Write 0Eh to TAP_CFG0 // Enable tap detection on X, Y, Z-axis
3. Write 0Ch to TAP_CFG1 // Set X-axis threshold and axes priority
4. Write 8Ch to TAP_CFG2 // Set Y-axis threshold and enable interrupt
5. Write 0Ch to TAP_THS_6D // Set Z-axis threshold
6. Write 7Fh to INT_DUR2 // Set Duration, Quiet and Shock time windows
7. Write 40h to MD1_CFG // Routing of single-tap recognition event on INT1
Double Tap Configuration Details :
1. Write 60h to CTRL1_XL // Turn on the accelerometer
// ODR_XL = 416 Hz, FS_XL = ±2 g
2. Write 0Eh to TAP_CFG0 // Enable tap detection on X, Y, Z-axis
3. Write 0Ch to TAP_CFG1 // Set X-axis threshold and axes priority
4. Write 8Ch to TAP_CFG2 // Set Y-axis threshold and enable interrupt
5. Write 0Ch to TAP_THS_6D // Set Z-axis threshold
6. Write 7Fh to INT_DUR2 // Set Duration, Quiet and Shock time windows
7. Write 80h to WAKE_UP_THS // Single-tap and double-tap enabled (SINGLE_DOUBLE_TAP = 1)
8. Write 08h to MD2_CFG // Double-tap interrupt driven to INT2 pin
Steps Followed :
power on the board
enter single tap on the board
Interrupt 1 pin is generating signal with single tap.
Double tap on the board
Interrupt 1 and Interrupt 2 pins are generating one-time signal with double tap.
Expected output :
Interrupt 1 signal should not be generated and only Interrupt 2 signal should generated, during Double tap
Actual Observation :
One single tap (Interrupt 1) signal and one double tap (Interrupt 2) signal, during Double tap (Totally 2 interrupt)
//..................................................................................................................//
