[ duda ] mpu9250 lectura de Reg acc/gyro duda

Hola amigos del foro tengo una duda sobre como se lee los registros del acc y gyro del mpu 9250 puesto que mirando el datasheet la informacion me la encapsula de la siguiente foma:

x HIGH (un byte) dir 0x3B
X LOW (un byte) dir 0x3C

Y HIGH (un byte) dir 0x3D
Y LOW (un byte) dir 0x3E

Z HIGH (un byte) dir 0x3F

Z LOW (un byte) dir 0x40

Por lo que yo entenderia toca leer cada registro aparte y unirnos en un entero de 16 bits por eje para obtener un dato RAW valido pero en cambio al ver las diferentes bibliotecas veo que la mayoria hacen esto:

x HIGH (6 byte) dir 0x3B

esto quiere decir que solo al primer registro le piden lso 6 bytes y de alli hacen un arreglo parecido a esto:

x = xHIGH[0]<<8 | xHIGH[1];
y = xHIGH[2]<<8 | xHIGH[3];
z = xHIGH[4]<<8 | xHIGH[5];

y con esto obtienen los ejes,y leyendo el data no e obtenido informacion de porque y si es valido obtenes los datos raw de x, y,z de un mismo registro cuando en el data a cada uno lo trata de manera diferente,

alguien me podria explicar, o dar luz de porque obtienen los datos de esta forma??

muchas gracias de antemano

giowidow:
x HIGH (6 byte) dir 0x3B

esto quiere decir que solo al primer registro le piden lso 6 bytes y de alli hacen un arreglo parecido a esto:

x = xHIGH[0]<<8 | xHIGH[1];
y = xHIGH[2]<<8 | xHIGH[3];
z = xHIGH[4]<<8 | xHIGH[5];

y con esto obtienen los ejes,y leyendo el data no e obtenido información de porque y si es valido obtenes

Parece correcto, son seis registros (6 byte) consecutivos, los lee y los guarda en xHIGH (el nombre es lo de menos aunque igual es lo que te confunde, contiene todos los datos x y z, HIGH y LOW de cada uno)

Luego para montar x coge los dos primeros, desplaza el HIGH (entran 0 por la derecha es decir de XXXXXXXX pasa a XXXXXXXX00000000) y luego con la instrucción OR (|) añade la parte baja (se aprovecha de que cualquier cosa OR 0 siempre es igual a cualquier cosa (XXXXXXXX00000000 OR 00000000YYYYYYYY= XXXXXXXXYYYYYYY Hay que tener en cuenta que a la izquierda del byte también hay siempre ceros)

GO_zalo:
Parece correcto, son seis registros (6 byte) consecutivos, los lee y los guarda en xHIGH (el nombre es lo de menos aunque igual es lo que te confunde, contiene todos los datos x y z, HIGH y LOW de cada uno)

Luego para montar x coge los dos primeros, desplaza el HIGH (entran 0 por la derecha es decir de XXXXXXXX pasa a XXXXXXXX00000000) y luego con la instrucción OR (|) añade la parte baja (se aprovecha de que cualquier cosa OR 0 siempre es igual a cualquier cosa (XXXXXXXX00000000 OR 00000000YYYYYYYY= XXXXXXXXYYYYYYY Hay que tener en cuenta que a la izquierda del byte también hay siempre ceros)

gracias Go zalo lo que me tiene con duda es por lo que en el datasheet del fabricante los trata asi, y no encuentro referencia a la otra foram y eso es lo que me confunde