Когда я пишу на свою SD-карту, используя библиотеку SDCard от Cypress, у меня есть некоторые проблемы. Потому что мне нужно все ускорить, используя sprintf()
, и подобное невозможно.Странное поведение при переключении
Библиотека позволяет мне записывать на 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