サイプレスのSDCardライブラリを使用して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