LSM6DS3: DRDY stops driving INT1
Sorry for all the postings, but we're under a deadline and really struggling with the reliability of the LSM6DS3.
Here's another of the strange things we're seeing on the LSM6DS3: It just stops driving DRDY on INT1. Since our present design relies on INT1 to signal that a new set of XYZ data is ready, when this happens we stop obtaining new acceleration data.
I've confirmed that when this happens the LSM6DS3 is still able to communicate via SPI. In fact, I'm even able to read back all of the configuration registers and confirm that they have the proper values - the values that got the LSM6DS3 running properly in the first place! So it appears that the LSM6DS3 still has the proper register values, but it just stops asserting INT1.
Here are the contents of the registers we confirm (we first write those that are not read-only):
INT1_CTRL/0x0D = 0x01 (B0 set causes DRDY to drive INT1)
INT2_CTRL/0x0E = 0x00 (not using INT2)
WHO_AM_I/0x0F = 0x69
CTRL1_XL/0x10 = 0x80 (1.66KHz high performance,
CTRL2_G/0x11 = 0x00 (gyro powered down for now)
CTRL3_C/0x12 = 0x44 (block data update, INT active high, push-pull, auto-inc, little endian)
CTRL4_C/0x13 = 0x0C (disable data during mode changes, SPI only)
CTRL5_C/0x14 = 0x00 (no rounding, no self tests)
CTRL6_C/0x15 = 0x00 (gyro disabled)
CTRL7_G/0x16 = 0x00 (gyro disabled)
CTRL8_XL/0x17 = 0x00 (defaults for acc filters)
CTRL9_XL/0x18 = 0x38 (enable all three acc axes)
...and we are, indeed, able to read these values back even after the LSM6DS3 has stopped asserting DRDY/INT1. With all three accelerometer axes enabled, an ODR of 1.66KHz, and the accelerometer DRDY enabled on INT1, we should be seeing INT1 asserted every 600uS. And we do - for a while. Then it just stops, even though all of the above register settings are still there (in fact, I typed the above values from a fresh read of them while the LSM6DS3 is failing to assert INT1).
What are we missing here? What would cause the LSM6DS3 to properly assert INT1 for a while, then just stop?
