AN101
© Kionix 2019 All Rights Reserved
11 July 2019
Page 25 of 27
6.
Troubleshooting
All Interrupt Issues
-
Make sure the accelerometer is configured to issue interrupt signals in the way that your
GPIO is programmed to handle them.
-
An oscilloscope on the physical interrupt pin can be a valuable tool to confirm physical
interrupt operation.
-
Double check the Tilt Position State Mask bits in Control Register 2 (Tilt Position
Function), the axis mask bits in Interrupt Control Register 2 (Wake-up Function), and/or
the Tap/Double-Tap Mask bits in Interrupt Control Register 3 (Tap/Double-Tap Function),
and Free Fall Threshold value in Free Fall Threshold Register (Free Fall Detect Function)
-
The Tilt Timer, WUF Timer, and TDT Timer(s) are based on their respective Output Data
Rates, so make sure the correct cycle time is used when calculating the expected timer
length (please refer to the specific product specification).
Tilt Interrupt Not Working
-
Make sure that the Tilt Position engine is enabled (TPE bit in Control Register 1).
-
Try shortening the timer requirements and make sure the next state transition does not
occur until after the expiration of the Tilt Timer.
-
Try increasing the Tilt Angle to ensure that the engine can see the transition between the
X and Y axes and the Z axis (this should not be necessary if using the default value for Tilt
Angle, but it’s worth considering if problems continue).
WUF (Wake Up Function) and or BTS (Back-to-Sleep) Interrupts Are Not Working
-
Make sure that the Wake-Up Function is enabled (WUFE bit in Control Register 4).
-
Make sure that the Back-to-Sleep engine is enabled (BTSE bit in Control Register 4).
-
If Back-to-Sleep function is not used (BTSE bit in Control Register 3 left at 0), the
sleep
mode should be forced during the initial setup and after each Wake-up interrupt has fired
through setting MAN_SLEEP bit to 1 in Control Register 5 (CNTL5). This will also clear
WAKE bit in the STAT register to indicate the wake state is no longer valid.
-
Make sure the interrupt release register INT_REL is read to clear the latched interrupt if
was set previously, to clear WUFS and/or BTS bits in Interrupt Status 3 (INS3) registers.
-
Try altering the threshold requirements to achieve desired operation. If the part is waking
up too easily, try increasing the threshold. If the interrupt is not firing at all, the threshold
may be set too high.
-
Try shortening the timer requirements, and make sure the acceleration on an unmasked
axis is above the threshold until the expiration of the WUF Timer.
TDT (Tap/Double-Tap) Interrupt Not Working
-
Make sure that the TDT engine is enabled (TDTE bit in Control Register 1).
-
Try altering the threshold requirements to achieve desired operation. If the part is
generating interrupts too often, perhaps due to a large noise floor created by excessive
environmental vibrations, try increasing the performance index low threshold (TTL) and/or
reducing the performance index high threshold (TTH). If the interrupt is not firing at all,
perhaps the low threshold may be set too high, or the high threshold may be set too low.
-
There are many timers in this engine which must work together closely, so for standard
operation if one timer is changed the other timers may need to be changed proportionally.