在調試MPU6050時,讀WHO AM I寄存器可以得到0x68,證明i2c沒問題,但讀取數據時,log打出來的總是0
翻閱網上各種文章,復位,延時,都試了,不好使。
後來仔細檢查代碼發現
gyro[0] = tmp[0]<<8 + tmp[1];
直接將寄存器的數據拼接打印出來了。
看datasheet裏寫的是:16位二進制補碼
於是將拼接後的數轉爲原碼,依然不好使。
再檢查代碼發現,<<優先級比+要低,加括號後改爲
gyro[0] = comp2raw((tmp[0]<<8) + tmp[1]);
這樣輸出就正常了。