Технический форум по робототехнике.
Правила форума
В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.
Duhas » 04 фев 2012, 21:06
ну трудится непонятно кем не интересно, имхо..
я в принципе работаю только тогда когда мне интересно... денег меньше, но интересно...
Michael_K » 04 фев 2012, 21:16
Duhas писал(а):я в принципе работаю только тогда когда мне интересно... денег меньше, но интересно...
Молодой ищщо
Duhas » 04 фев 2012, 22:21
и да и нет,
молодой да
не думаю что буду стараться уйти от этого принципа.. скорее буду стараться следую этому принципу зарабатывать достаточно
Michael_K » 04 фев 2012, 23:32
Да я ж не упрекаю, я завидую...
И поверьте - "зарабатывать" - это ни при чем.
Любишь кататься - люби и саночки возить.
Я к тому, что вот посуду мыть не интересно... а надо
)) И у конвейера стоять всю жизнь - не интересно... Интерес вообще штука такая... сегодня есть, завтра нет. А ответственность, например, остается, репутация остается и т.д.
Duhas » 05 фев 2012, 08:49
нуу, я не особо люблю мыть посуду )
а если по делу - много не интересно.. просто стараюсь уходить в сторону где интересно..
=DeaD= » 05 фев 2012, 10:16
Работать не за деньги первые несколько лет вполне нормально.
Сначала ты работаешь на репутацию\компетенции, потом они работают на тебя.
dccharacter » 09 фев 2012, 03:21
Пытался осмыслить концепцию "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;
О, так работает. Если объединить в одну строку, оптимизация съедает знак (я так думаю)
elmot » 09 фев 2012, 10:50
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;
О, так работает. Если объединить в одну строку, оптимизация съедает знак (я так думаю)
А чего ты добивался-то?
boez » 09 фев 2012, 12:05
- Код: Выделить всё • Развернуть
val = ((signed char)(RxReg[0]<<2))>>2
Причем >>2 вообще и не обязательно - можно просто сделать <<2 и работать дальше с этим числом как с обычным signed char -128..127, просто с 6-битной точностью (младшие 2 бита всегда нули).
dccharacter » 09 фев 2012, 12:39
boez писал(а):- Код: Выделить всё • Развернуть
val = ((signed char)(RxReg[0]<<2))>>2
Причем >>2 вообще и не обязательно - можно просто сделать <<2 и работать дальше с этим числом как с обычным signed char -128..127, просто с 6-битной точностью (младшие 2 бита всегда нули).
Ну да... Просто я так феерически вчера тупил! Но, поскольку вы в мою голову залезть не сможете, вам этой фантасмагории не увидать
Добавлено спустя 36 секунд:elmot писал(а):dccharacter писал(а):Signed byte 6 bit 2’s complement data with allowable range of
+31 to -32
А чего ты добивался-то?
Да тупо снять показания с акселя
dccharacter » 10 фев 2012, 00:00
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
Дальше читаем регистр в переменную-структуру XOUT_REG, а нужное нам значение уже лежит в XOUT_XOUT
Добавлено спустя 57 секунд:П.С. Придумал не сам - просто попристальнее посмотрел на фрискейловский хидер
Добавлено спустя 1 час 16 минут 59 секунд:Меняем тему: 9-ти осевой мемс
http://invensense.com/mems/gyro/mpu9150.htmlAvailable 4/16/2012
The MPU-9150 is a System in Package (SiP) that combines two chips: the MPU-6050, which contains a 3-axis gyroscope, 3-axis accelerometer, and an onboard Digital Motion Processor™ (DMP™) capable of processing complex 9-axis MotionFusion algorithms; and the AK8975, a 3-axis digital compass.
Ругают правда эту Инвенсенсу на чем свет стоит за их СДК - пишут, что садист разрабатывал. Но скажите клевая штуковина?
Myp » 10 фев 2012, 08:47
capable of processing complex 9-axis MotionFusion algorithms
это он там сам внутре что-то считает и выдаёт наружу готовое движение?
dccharacter » 10 фев 2012, 12:43
Myp писал(а):capable of processing complex 9-axis MotionFusion algorithms
это он там сам внутре что-то считает и выдаёт наружу готовое движение?
Ага. Причем там драйвер для магнетометра (встроенного) уже есть
Myp » 10 фев 2012, 13:37
интересно почём такой.
dccharacter » 10 фев 2012, 13:43
Я думаю баксов 60-80 будет стоить