Понимание примера кода?

Я пытаюсь разобраться в этом образце на Arduino для датчика MPU-9150. Он подключен по шине I2C и использует эту функцию для выборки с датчика,

int MPU9150_readSensor(int addrL, int addrH){
Wire.beginTransmission(MPU9150_I2C_ADDRESS);
Wire.write(addrL);
Wire.endTransmission(false);

Wire.requestFrom(MPU9150_I2C_ADDRESS, 1, true);
byte L = Wire.read();

Wire.beginTransmission(MPU9150_I2C_ADDRESS);
Wire.write(addrH);
Wire.endTransmission(false);

Wire.requestFrom(MPU9150_I2C_ADDRESS, 1, true);
byte H = Wire.read();

return (int16_t)((H<<8)+L);
}

например, addrL и addrH — это два адреса,

#define MPU9150_TEMP_OUT_H         0x41
#define MPU9150_TEMP_OUT_L         0x42

То, что я получаю через последовательный монитор, когда значения печатаются, всегда равно -1, я думаю, что это что-то делать с (int16_t) Тип, кто удаление ничего не делает с напечатанным значением, но я не уверен? Также я не уверен, почему есть два адреса для получения одного значения, H и L, и почему они сдвинуты и сложены вместе? Это как-то связано с шиной I2C?

У меня большой недостаток знаний здесь, и я пытаюсь понять это, поэтому любая помощь будет высоко ценится.

Спасибо
Alex

0

Решение

Задача ещё не решена.

Другие решения