Fondo
Siguiendo el procedimiento normal de solución de problemas, en ausencia de otros datos (por ejemplo, el uso de algunos de los registros de estado del dispositivo proporcionará información útil). Formulé algunas hipótesis para posibles causas, verifiqué esas posibles causas en la hoja de datos del ST LSM6DS3 y algunos códigos de ejemplo ( ver más abajo) y encontré un problema. (Aún podría haber más problemas, la resolución de problemas suele ser iterativa, pero es necesario solucionar este problema).
Te falta una configuración de inicialización, ver más abajo.
Sin esa configuración, el acelerómetro no pondrá ninguna lectura en el FIFO. En ese caso, como ha visto, la interrupción de umbral FIFO no se puede activar, ya que FIFO no se está llenando con lecturas y, por lo tanto, nunca puede alcanzar su valor de umbral.
En lugar de hacer todo el trabajo para decidir cómo I inicializaría el dispositivo, revisé una biblioteca existente de SparkFun, que también inicializa el FIFO, como usted quiere hacer (algunas bibliotecas existentes ignoran el FIFO). El archivo principal del curso de C ++ está aquí:
enlace
En base a mi revisión de la hoja de datos del dispositivo, la nota de la aplicación y la comparación del código de inicialización de esa biblioteca, encontré la configuración faltante a continuación que explica su síntoma de "no hay interrupción FIFO".
Corrección
El registro FIFO_CTRL3
y / o FIFO_CTRL4
debe configurarse en un valor distinto de cero.
Esto se explica en Nota de aplicación AN4650 en el LSM6DS3 donde se indica en la página 90:
Se requiere establecer al menos uno de los cuatro factores de reducción en 1 (sin reducción).
Dado que ninguno de esos está en su lista de registros inicializados, ambos tendrán el valor predeterminado de cero, lo que significa que no se colocarán lecturas (giroscopio o acelerómetro) en el FIFO.
Espero que desees establecer FIFO_CTRL3
en 0b00000001 (es decir, DEC_FIFO_XL0
= 1).
Si aún tiene problemas, haga más comparaciones con el código SparkFun (me detuve en el primer problema que encontré) y use los registros de estado del dispositivo para averiguar qué le sucede al dispositivo con más detalle, con respecto a cualquier problema nuevo. usted encuentra.