Estoy usando la IMU de la placa de conexión MPU6050 junto con el microcontrolador ATtiny2313 para obtener los valores del acelerómetro y el giroscopio de la IMU. Aquí está la pregunta: quiero saber qué valores son computarizados por el DMP dentro del MPU6050 y cómo puedo leer los valores usando I2C (es decir, ¿cuáles son los números de registro en los que se almacenan los valores DMP?)
No estoy usando ninguna biblioteca ya que he escrito todo el código yo mismo. Solo necesito saber cuales son los datos que proporciona el DMP y como leerlos. Por favor ayuda !
No estás solo si estás frustrado. a continuación hay una explicación detallada de lo que está pasando con este chip, pero es una lectura larga, así que apilaré algunos enlaces en la parte superior aquí para que pueda comenzar rápidamente:
probablemente obtendrá los mejores resultados al portar una biblioteca existente, o al menos tomando prestada la lógica de algunas de las funciones. Invensense lanzó recientemente el código fuente para la versión 6.12 de su controlador MotionApps, y también proporcionan (solo) las últimas versiones de sus documentos para la parte de sus controladores basada en I2C/Registro. Todo esto está disponible en su sitio después de registrarse. Lamentablemente, muchas de las funciones de DMP no están completamente incluidas... consulte más abajo para obtener más información al respecto.
I2CDevLib es una gran fuente de información sobre el MPU6050. Tengo un hilo abierto ahora con la esperanza de suscitar un debate sobre cómo activar las funciones avanzadas de DMP del chip. Sin embargo, hay mucho que leer, necesitarás una larga noche para asimilarlo todo.
De hecho, obtuve la mayoría de mis avances después de buscar en Google otras discusiones sobre proyectos basados en MPU (cuadricópteros, teléfonos celulares, controles remotos de wii, etc.). Mucha gente usa este chip, pero por diferentes razones, muchos usuarios del foro desconocen los problemas y soluciones de los demás.
Si busca en Google, no limite las búsquedas a "MPU6050". Hay varias otras unidades, como la 6500 y la 9150, que comparten controladores. Y no se sorprenda si llega a la página 10 de los resultados de Google: siga paginando :)
Así que ahora tiene algunos consejos, aquí está la historia completa:
El código ejecutado por el coprocesador DMP en el MPU6050 es propietario y no se almacena en el chip; la versión compilada se incluye con cada versión de los archivos MPU c/c++ de Invensense como una matriz de ~3kB de bytes sin procesar. Para empeorar las cosas, los registros y las ubicaciones de memoria para habilitar o modificar la funcionalidad DMP pueden ser diferentes para cada versión del firmware DMP.
Incluso los mapas de registro básicos y la documentación de la API para las funciones que se enumeran en las especificaciones del producto, como la detección de gestos y la fusión avanzada de sensores, son difíciles de encontrar. Algunas versiones de los documentos de Invensense incluyen secciones que otras revisiones no incluyen, aludiendo a una funcionalidad que no está documentada en ningún otro lugar. Es casi como si hubiera una versión de "solo uso interno" de su documentación, pero los miembros del personal de documentación ocasionalmente incluyen algo confidencial en un comunicado público por accidente.
Mi apuesta es que, a menos que alguien haga ingeniería inversa de un binario, solo Invensense sabrá exactamente cómo se mueven los engranajes allí.
A pesar de todo esto, hay muchas promesas en este pequeño chip: algunas de las constantes en los archivos .h implican la existencia de una funcionalidad que es muy intrigante, como Swing_xxx, Flick_xxx y muchas otras . Recientemente logré obtener datos de detección de Tap y Orientación en el FIFO después de portar un controlador de una versión aleatoria del sistema operativo Android. Desafortunadamente, encontré el archivo fuente después de hacer clic en más de 20 páginas de resultados de Google, y estaba tan inmerso en Chrome: "pestañas nuevas" en ese momento que ni siquiera guardé un enlace... ¡lo siento! Ahora que estoy obteniendo datos, puedo ver que Tap y Orientation solo representan 8 bits del aumento de 4 bytes en el tamaño del paquete FIFO cuando "Enviar datos de gestos FIFO" está habilitado. Definitivamente hay más que aprender.
¡Buena suerte, avísanos a todos si haces algún progreso!
-Mate
juan m
MateE_WI
MateE_WI