реклама на сайте
подробности

 
 
> Преобразование кода 24 битного ацп к виду напряжения
messenger
сообщение Dec 31 2015, 14:32
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 361
Регистрация: 23-03-07
Пользователь №: 26 457



Преобразую код 24 битного ацп к виду напряжения. Т.к. переменная 32 битная сделал вот так.

cod_acp=0;

T3= (acp_MSB & 0b10000000)>>7; //выделим знак то есть Z0000000
if (T3==1)
{
cod_acp=0b00000000000000000000000011111111;
}

cod_acp = (cod_acp<<8) ^ acp_MSB ; // 00000000 00000000 Z00000000 хххххххх
cod_acp = (cod_acp<<8) ^ acp_Mid_Byte; // и так далее
cod_acp = (cod_acp<<8) ^ acp_LSB;

znachenie_acp=((cod_acp*5.0)/8388607.0)/64.0;//переводим в напряжение

подскажите,есть более быстрый способ? что бы не тратить машинное время.
Первое что пришло в голову
znachenie_acp=cod_acp*0.00000000931322685637794;
может есть варианты как еще выделить знак?
мне нужно минимальное вермя преобразования

Сообщение отредактировал messenger - Dec 31 2015, 14:38
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_pv
сообщение Jan 1 2016, 14:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



надо убрать плавающую запятую совсем и сделать просто
adcVolt = (adcCode * 149) >> 4;
результат получится в десятках наноВольт с точностью до 0.007%.

Цитата
Надо примерно так:
double znachenie_acp = acp.sl*(5.0/(2147483648*64));

вот так как раз не надо (особенно учитывая что это codevision), потому что (2147483648*64) хоть и стоит рядом с 5.0, думаю вполне может оказаться что будет сначала посчитано как int (который у АВР кстати вообще 16 битный, хотя опять же, как там у codevision - не уверен) а только потом преобразовано в double.
Go to the top of the page
 
+Quote Post
messenger
сообщение Jan 1 2016, 17:21
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 361
Регистрация: 23-03-07
Пользователь №: 26 457



Цитата(_pv @ Jan 1 2016, 18:43) *
надо убрать плавающую запятую совсем и сделать просто
adcVolt = (adcCode * 149) >> 4;
результат получится в десятках наноВольт с точностью до 0.007%.


поясните пожалуйста для начинающих, не могу въехать
Go to the top of the page
 
+Quote Post
_pv
сообщение Jan 1 2016, 21:41
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(messenger @ Jan 1 2016, 23:21) *
поясните пожалуйста для начинающих, не могу въехать

ну величина 1 LSB ацп это 5.0В/(2^23)/64 = 9.31322574615479 нановольт (кстати, двойку не потеряли на знаковости? то есть весь входной диапазон АЦП +-5В=10В или 5В?)
а число 149/16 == это 9.3125 (отличается от 9.31322574615479 лишь на 0.007%), то есть умножив код на 149 целочисленно (32 разряда не переполнятся) и поделив на 16, (сдвинув на 4), получится целочисленный результат, но в нановольтах.

про десяток нановольт в прошлом сообщении - это я по запятой в калькуляторе промазал, в 10 раз
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- messenger   Преобразование кода 24 битного ацп к виду напряжения   Dec 31 2015, 14:32
- - mcheb   Цитата(messenger @ Dec 31 2015, 18:32) Пр...   Dec 31 2015, 15:46
- - Alex11   Лучше сделайте union из 4 байтов и 32-битного слов...   Dec 31 2015, 18:41
|- - M_Andrey   Цитата(Alex11 @ Dec 31 2015, 21:41) if(ac...   Dec 31 2015, 19:20
- - messenger   я в codevision пишу. Поясните что есть "union...   Dec 31 2015, 19:08
|- - M_Andrey   Цитата(messenger @ Jan 1 2016, 20:21) поя...   Jan 1 2016, 17:52
|- - Dog Pawlowa   Цитата(messenger @ Jan 1 2016, 20:21) поя...   Jan 1 2016, 18:09
- - messenger   Очень интересный способ! И память можно здоров...   Jan 2 2016, 07:30
|- - _pv   Цитата(messenger @ Jan 2 2016, 13:30) Тол...   Jan 2 2016, 08:43
- - messenger   9312500   Jan 2 2016, 10:09
|- - _pv   Цитата(messenger @ Jan 2 2016, 16:09) 931...   Jan 2 2016, 10:28
- - messenger   Что то я смысл не пойму. Беззнаковый int от 0 до ...   Jan 2 2016, 19:39
|- - Dog Pawlowa   Цитата(messenger @ Jan 2 2016, 22:39) Что...   Jan 3 2016, 02:56
- - sigmaN   возможно это поможет понять предыдущие советы http...   Jan 29 2016, 18:48


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 23:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01315 секунд с 7
ELECTRONIX ©2004-2016