Partage
  • Partager sur Facebook
  • Partager sur Twitter

Explication buffer Arduino

11 février 2019 à 17:13:33

Bonjour tous le monde,

Je voudrais avoir des informations sur les fonctions du buffer qui va suivre car je n'en comprend pas le principe et à quoi cela sert il. 

Ceci est tiré d'un des programmes pour le gyroscope MPU6050. 

Merci à vous !

  • Partager sur Facebook
  • Partager sur Twitter
12 février 2019 à 10:19:45

Hello,

Dans les registres de la puce MPU6050 tu dois avoir quelque chose dans ce style :

Adresse  | Données

43          | GyroX[15:8]
44          | GyroX[7:0]
45          | GyroY[15:8]
46          | GyroY[7:0]
47          | GyroZ[15:8]
48          | GyroZ[7:0]

A l'adresse 43 tu à le MSB de GyroX, les bits de poids fort, et à l'adresse 44 les bits de poids faible. A chaque adresse tu trouve 8 bits, soit un octet. Idem pour Y et Z.

On va venir lire en une seule fois, de l'adresse 43 à 48 à destination du buffer : ce qui était à l'adresse 43 est maintenant copié dans buffer[0], 44 dans buffer[1]...

Ensuite on reconstruit un seul entier (gyro_x) à partir des deux morceaux qui sont dans buffer[0] et buffer[1] avec l'opérateur de décalage de bits << qui équivaut à multiplier par 2 huit fois (x 2^8).

Exemple :

buffer[0] = 0b01001111; //MSB
buffer[1] = 0b11110110; //LSB

0b01001111 << 8 = 0b0100111 00000000 (on décale 8 fois vers la gauche et on complète par des 0).

0b0100111 00000000 | 0b11110110 = 0b0100111 11110110.

Par contre, j'ai l'impression que le programme n'est pas fait pour un MPU6050 où accélération et gyro sont géré par le même chip, et où les deux sont retournés MSB en premier. On dirait plus un programme pour une board avec ADXL345 & IMU3000 par exemple où les deux valeurs sont gérées par des chips différents. Ce qui semble être confirmé par le commentaire qui parle de "chips" au pluriel et ou gyro est dans l'ordre x,y,z et accel y,x,z.

-
Edité par Arkturus 12 février 2019 à 10:28:47

  • Partager sur Facebook
  • Partager sur Twitter