ну трудится непонятно кем не интересно, имхо..
я в принципе работаю только тогда когда мне интересно... денег меньше, но интересно...
roboforum.ruТехнический форум по робототехнике. |
|
|
Duhas писал(а):я в принципе работаю только тогда когда мне интересно... денег меньше, но интересно...
rxReg[0] *= 4;
rxReg[0] /= 4;
dccharacter писал(а):Пытался осмыслить концепцию "2's complement". И если вроде бы для 8-ми битного числа получилось (поксорь и прибавь один), то для 6-ти битного - ну просто ад какой-то. Удалось неоднократно взорвать и вывернуть себе наизнанку мозг, но как интерпретировать реультат с акселя так и не понял.
Signed byte 6 bit 2’s complement data with allowable range of
+31 to -32
В итоге нагородил вот такой адский огород:
signed char rxReg[3];
rxReg[0] = (~rxReg[0]&0x3F) + 1;
if (rxReg[0] > 31) rxReg[0] -=64;
Мозг уже в принципе соображать отказывается
Добавлено спустя 29 минут 42 секунды:
- Код: Выделить всё • Развернуть
rxReg[0] *= 4;
rxReg[0] /= 4;
О, так работает. Если объединить в одну строку, оптимизация съедает знак (я так думаю)
val = ((signed char)(RxReg[0]<<2))>>2
boez писал(а):
- Код: Выделить всё • Развернуть
val = ((signed char)(RxReg[0]<<2))>>2
Причем >>2 вообще и не обязательно - можно просто сделать <<2 и работать дальше с этим числом как с обычным signed char -128..127, просто с 6-битной точностью (младшие 2 бита всегда нули).
elmot писал(а):dccharacter писал(а):Signed byte 6 bit 2’s complement data with allowable range of
+31 to -32
А чего ты добивался-то?
boez писал(а):
- Код: Выделить всё • Развернуть
val = ((signed char)(RxReg[0]<<2))>>2
Причем >>2 вообще и не обязательно - можно просто сделать <<2 и работать дальше с этим числом как с обычным signed char -128..127, просто с 6-битной точностью (младшие 2 бита всегда нули).
typedef union {
byte Byte;
struct{
byte XOUT0 :1;
byte XOUT1 :1;
byte XOUT2 :1;
byte XOUT3 :1;
byte XOUT4 :1;
byte XOUT5 :1;
byte ALERT :1;
byte :1;
} Bits;
struct {
byte grpXOUT :6;
byte :1;
byte :1;
} Merged;
} XOUT_STR;
extern volatile XOUT_STR _XOUT;
#define XOUT_REG _XOUT.Byte
#define XOUT_XOUT0 _XOUT.bits.XOUT0
#define XOUT_XOUT1 _XOUT.bits.XOUT1
#define XOUT_XOUT2 _XOUT.bits.XOUT2
#define XOUT_XOUT3 _XOUT.bits.XOUT3
#define XOUT_XOUT4 _XOUT.bits.XOUT4
#define XOUT_XOUT5 _XOUT.bits.XOUT5
#define XOUT_ALERT _XOUT.bits.ALERT
#define XOUT_XOUT _XOUT.Merged.grpXOUT
Myp писал(а):capable of processing complex 9-axis MotionFusion algorithms
это он там сам внутре что-то считает и выдаёт наружу готовое движение?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3