Cypress의 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은 정상입니다. 즉, 음수가 아닌 값을 오른쪽으로 이동할 때 오류가 발생합니다.
무슨 일 이니? 나는 char
에 다음 UINT16에 int16_t
을 변환하고 당신은 통찰력 :
C 또는 C++로 가정? – Enfyve
예, 죄송합니다, 그 C++ –
gz는 그것을 조정 한 후에 무엇을 출력합니까? – Enfyve