Hoja de datos de LIS3DSH sin entender y AN339 Nota de aplicación - Interpretar datos del acelerómetro

1

Estoy leyendo la hoja de datos del acelerómetro LIS3DSH y tengo algunas preguntas con respecto al siguiente texto:

  

2.2 Comprensión de los datos de aceleración

     

Los datos de aceleración medidos se envían a OUT_X_H, OUT_X_L, OUT_Y_H,   Los registros OUT_Y_L, OUT_Z_H y OUT_Z_L. Estos registros contienen,   respectivamente, la parte más significativa y la menos significativa   parte de las señales de aceleración que actúan sobre los ejes X, Y y Z. AIE   = 0 IEA = 1 Secuencia de inicio AN3393 14/100 Doc ID 018750 Rev 2 Los datos completos de aceleración para el canal X (Y, Z) vienen dados por   concatenación OUT_X_H & OUT_X_L (OUT_Y_H & OUT_Y_L, OUT_Z_H &   OUT_Z_L) y se expresa en el número de complemento de 2.

Ahora, dado que las lecturas del acelerómetro tienen un tamaño de 16 bits, sé que tengo que combinar los valores con la función AND, como se indica en la cita de la hoja de datos.

    
pregunta KernelPanic

1 respuesta

3

No, no AND, quieres usar OR. Necesitas algo como esto:

int x = (((unsigned int) OUT_X_H) << 8) | ((unsigned int) OUT_X_L)
int y = (((unsigned int) OUT_Y_H) << 8) | ((unsigned int) OUT_Y_L)
int z = (((unsigned int) OUT_Z_H) << 8) | ((unsigned int) OUT_Z_L)

Esto cambiará sobre el byte alto y luego O los dos bytes juntos para el resultado de 16 bits. A pesar de que el número de 16 bits está firmado, debe hacer la combinación de números sin signo para que no firme accidentalmente algo. ¡Asegúrate de no mezclar MSB y LSB, tampoco! Hace apenas unos días ayudé a alguien a corregir este problema exacto: leer un acelerómetro y volver a ensamblar accidentalmente los datos de manera incorrecta.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas