Teensy 3.0 (TeensyDuino) + L3G4200D === ¿“574” leyendo? ¿Por qué? ¿Como arreglar?

0

Tengo un Arduino Uno, un Arduino Nano, un Teensy 3.0 y un giroscopio de 3 ejes (módulo L3G4200D de Parallax enlace )

Cuando conecto el Arduino Nano o Arduino Uno al giroscopio y utilizo el código de muestra que se encuentra en la parte inferior de esta página, funciona muy bien: enlace

Obtengo las lecturas que espero del giroscopio.

Cuando conecto el mismo giroscopio a mi Teensy 3.0, recibo lecturas ... pero no están del todo bien. En lugar de leer (x, y, z) 0, 0, 0 en reposo, leerá 574, 0, 574. A veces 574, 0, 0 y, a veces, 574, 574, 574.

Sin embargo, cuando muevo el módulo, los números se leen más cerca de lo que esperaría de los tableros Arduino.

Todavía soy muy nuevo en hardware. Entiendo algunos de los conceptos básicos, y sé lo suficiente como para asegurarme de que tengo todos los cables correctos conectados a los pines correctos, etc. Estoy seguro de que hay algo en el código de ejemplo que estoy usando y que causa el problema, después de todo, este es un código de muestra de arduino que estoy usando con un chiquillo ...

Estoy codificando en el IDE de Arduino con el complemento TeensyDuino. Tengo la tarjeta configurada correctamente en las opciones de Arduino, por supuesto.

¿Alguien tiene alguna idea de por qué mi eje X y Z están leyendo 574 la mayor parte del tiempo? ¿Qué necesito hacer para solucionar esto?

[EDITAR]

Por solicitud de comentarios, aquí hay imágenes de mi configuración.

La configuración de Teensy: enlace

La configuración de Arduino Nano: enlace

Como puede ver, la configuración es la misma: simplemente coloque los pines en el lugar correcto para el controlador que estoy usando. El Nano produce los resultados correctos, mientras que el Teensy no.

[EDITAR]

¿El Arduino sería de 16 bits mientras que el Teensy de 32 bits causaría problemas? ¿Necesito ajustar las matemáticas para calcular el complemento de los dos de manera diferente? ¿Usar diferentes tipos de variables para almacenar la información resultante? ¿O estoy pensando mal en este camino?

    
pregunta Derick Bailey

1 respuesta

2

Lo descubrí.

El problema estaba en la arquitectura de 32 bits frente a 16 bits de las placas Teensy vs Arduino. En un entorno de 32 bits, un int es de 32 bits. En un entorno de 16 bits, un int es de 16 bits. Al menos, eso es lo que veo en Teensy (32 bits) contra Arduino (16 bits). Esto hace una diferencia en el cálculo del complemento de desplazamiento de bits / 2 realizado para los valores X, Y y Z.

Cuando cambio los tipos de datos de int x, y, z; a short x, y, z; en mi bosquejo de Teensy, me da la lectura correcta de los valores.

    
respondido por el Derick Bailey

Lea otras preguntas en las etiquetas