當我使用賽普拉斯的SDCard Library寫入SD卡時,遇到了一些挑戰。因爲我必須加快速度,所以使用sprintf()
和類似的是不可能的。移動時出現奇怪的行爲
庫只允許我用uchars或字符串寫入SD卡。不幸的是我的價值都是int16_t
。所以這裏是問題出現的地方:
int16_t ax = -15000;
ay = -10000;
az = -32760;
gx = 32760;
gy = 25000;
gz = 10;
mx = -10;
my = 20;
mz = 0;
// Then I put it into an array
char suma[] = {
((uint16_t) ax) & 0xff,
((uint16_t) ax) >> 8,
((uint16_t) ay) & 0xff,
((uint16_t) ay) >> 8,
((uint16_t) az) & 0xff,
((uint16_t) az) >> 8,
((uint16_t) gx) & 0xff,
((uint16_t) gx) >> 8,
((uint16_t) gy) & 0xff,
((uint16_t) gy) >> 8,
((uint16_t) gz) & 0xff,
((uint16_t) gz) >> 8,
((uint16_t) mx) & 0xff,
((uint16_t) mx) >> 8,
((uint16_t) my) & 0xff,
((uint16_t) my) >> 8,
((uint16_t) mz) & 0xff,
((uint16_t) mz) >> 8,
0
};
當我檢索數據時出錯了。數據是好的,直到gz
。它顯示10好,但其餘的都沒了。
將10更改爲257可消除此問題,並且-10無誤,這意味着在右移低非負值時發生錯誤。
什麼是?我希望你有一些見解:)
假設C或C++? – Enfyve
對不起,它的C++ –
gz在調整後輸出了什麼? – Enfyve