преобразование комплементарного кода в беззнаковый

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 4
Зарегистрирован: Ср дек 16, 2015 17:41:39

Сообщение мысык-кот »

Уважаемые, доброго времени суток. Помогите мне пожалуйста понять: как привести знаковый комплементарный код к беззнаковому
выдержка из даташита на AD7865
"The designed code transitions take place midway between successive
integer LSB values (i.e., 1/2 LSB, 3/2 LSBs, 5/2 LSBs
etc.) LSB size is given by the formula, 1 LSB = FSR/16384. For
the ±5 V range, 1 LSB = 10 V/16384 = 610.4 μV."
кусок кода считывание АЦП:

Код: Выделить всё

int16_t adc_data_read(void)
  {   
    AD7865_CONTROL_PORT &= ~(_BV(AD7865_CS)|_BV(AD7865_RD));//
    _delay_us(3);
    int16_t adc1=(int16_t)((AD7865_OUTL_PIN))| (AD7865_OUTH_PIN<<8);
    adc1 >>= 2;
    AD7865_CONTROL_PORT|=_BV(AD7865_CS)|_BV(AD7865_RD);//
    return adc1;
  }
и код попытки преобразования

Код: Выделить всё

 cli();
            int16_t temp = adc_data_read();//
            uint16_t x = (uint16_t)((uint32_t)temp+0x2000);
             adc_res=x;
             sei();
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Вы имеете ввиду получить абсолютное значение?

Код: Выделить всё

if (i<0)i*=-1;
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Родился
Сообщения: 4
Зарегистрирован: Ср дек 16, 2015 17:41:39

Сообщение мысык-кот »

да хотелось бы разобраться как получить uint16_t . Сейчас у меня значение с АЦП насколько я понимаю идет в дополнительном коде. С нулем на середине шкалы и убывающий к краям этой шкалы. Я не могу понять как мне получить линейно возрастающее значение от -IN до +IN .
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Код: Выделить всё

uint16_t adc_res = (uint16_t) (adc_data_read()+0x2000);
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «AVR»