Об акселерометре замолвите слово

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Алексей132, 12 июн 2020.

  1. parovoZZ

    parovoZZ Гуру

    Сказано же - меняй на знаковую переменную. Тогда компилятор сам разберётся с отрицательными значениями.
     
    Алексей132 нравится это.
  2. завтра попробую, СПАСИБО!!!!!!!!!! про это не знал
     
  3. спасибо, стало все намного лучше.
    Но вот в логике не могу понять, смотрю на осциллографе - когда у этих двух байт, которые я получаю почти все значения в 1, то есть по логике это же максимум а я получаю после компилятора по уарт что то близкое к 0. По факту так и должно быть, но не пойму никак, в чем разница в знаковом и безнаковом. Точнее вообще какая логика в знаковом, вот как можно получить знак минус, мы же получаем 0 и 1. Вроде нашел пояснение,что старший бит отвечает за знак, но у меня всего 16 бит и они все предназначены для значение ускорения. В люлм случае с точки зрения логики - ничего не сходится
     
    Последнее редактирование: 16 июн 2020
  4. parovoZZ

    parovoZZ Гуру

    читай про дополнение до двух.
     
    Алексей132 нравится это.
  5. ух вот ведь "бесовщина" какая -
    "если число отрицательное, то все биты модуля числа инвертируются, то есть все единицы меняются на нули, а нули — на единицы, к инвертированному числу прибавляется единица, далее к результату дописывается знаковый разряд, равный единице" - все красиво и просто
     
  6. А вот в плане логике работы, мне надо так же действовать как и с безнаковыми переменными?
    то есть
    result = firstbyte«8|secondbyte
    или тут иначе как то надо?
     
  7. parovoZZ

    parovoZZ Гуру

    в смысле собрать два байта в слово? Я бы сделал явное преобразование типов. result должен быть int16_t.
     
  8. b707

    b707 Гуру

    так же
    Для байтов абсолютно пофиг, что у них внутри - знаковое, беззнаковое или даже плавающая точка. Что там внутри окажется - зависит только от того, как ты сам это интерпретируешь в своей программе
     
  9. все заработало, спасибо огромное.
    дело было в "дополнение до двух."