Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
как оптимизировать выражение: ((X * 2)/1024)/5 в простые операции? не пойму как с делением 5 поступить
Отправлено
eXeC001er
29 апреля 2008 г. 15:16
Составить ответ
|
Вернуться на конференцию
Ответы
Ответ:
—
burbon
(29.04.2008 19:55:12
194.187.230.100
, 736 байт)
Громоздко и неполноценно. Полный правильный ответ ниже - DAC = (X*6704ul) >> 16 -->
—
MBedder
(29.04.2008 21:23:1
80.92.96.19
,
пустое
,
ссылка
)
x/5 приближенно = (x*52)>>8 или (x*102)>>9 или (x*205)>>9 итд в порядке повышения точности. В общем случае у/х = (у * (2^n/x))/(2^n)
—
F8
(29.04.2008 16:10:44
92.112.148.205
,
пустое
)
DAC = (X*6704ul)>>16. Сдвиги не на 8хN битнеоптимальны, а (x*52)>>8 - слишком неточно - хуже 0.3%-->
—
MBedder
(29.04.2008 16:24:8
80.92.96.19
,
пустое
)
Ну это зависит от процессора, к примеру если в ARM то пох абы за разрядность не вылезть. PS ну это я так отмазку леплю типа не лажанулся :))
—
F8
(29.04.2008 17:03:31
92.112.148.205
,
пустое
)
—
MBedder
(29.04.2008 16:24:47
80.92.96.19
,
пустое
,
ссылка
)
вообщем у меня формула для получения кода для ЦАП такова: КОД = ( ( X / 5000 ) * 1024 ) / 2
—
eXeC001er
(29.04.2008 15:54:20
81.26.142.208
,
пустое
)
Сколько разрядов ЦАП? Какие размерности Х?
—
Artem-1.6E-19
(29.04.2008 16:11:24
209.160.64.220
,
пустое
)
или ((X*2)/512)/10 или (X/256)/10
—
MikeR
(29.04.2008 15:30:35
80.79.176.45
,
пустое
)
Умножыть Х на 0х19999А и отбросить от результата млачшые 3 байта...или 4...Считать лень. Короче, отбросить скока-то байт. ;О)
—
-mse-
(29.04.2008 15:30:13
83.239.86.98
,
пустое
)
наверное и 0х199А хватит.
—
-mse-
(29.04.2008 15:49:6
83.239.86.98
,
пустое
)
Ответ:
—
m16
(29.04.2008 15:20:32
78.132.136.236
,
пустое
,
ссылка
)
Числа-то целые?
—
Quasy
(29.04.2008 15:18:12
192.168.0.207, 80.243.9.34
,
пустое
)
ну надо получить целое. чтобы его в ЦАП в виде кода загнать. Х может быть и не целым. в ообщем мне нада получить код для 10 битного ЦАП учитывая что цап может от 0 до 5В, выход может от 0 до 10В (после ЦАПа усилитель) и соответсвенно пользователь задает значения от 0 до 10В (точнее от 0 до 10000 мВ). и вот как бы это все привести к коду ЦАП.
—
eXeC001er
(29.04.2008 15:24:9
81.26.142.208
,
пустое
)
Что значит "Х может быть и не целым"??
—
MBedder
(29.04.2008 15:48:45
80.92.96.19
,
пустое
)
абшибся. X всегда целое число. и меняется от 0 до 10000
—
eXeC001er
(29.04.2008 15:51:13
81.26.142.208
,
пустое
)
То есть тебе надо 0..10 000 преобразовать в 0..1023? Сформулируй предельно точно
—
MBedder
(29.04.2008 15:54:8
80.92.96.19
,
пустое
)
ТОЧНА!
—
eXeC001er
(29.04.2008 15:54:43
81.26.142.208
,
пустое
)
Тогда DAC = (X*6704ul) >> 16
—
MBedder
(29.04.2008 16:19:51
80.92.96.19
,
пустое
)
Если надо точно, и есть float, то(+)
—
Quasy
(29.04.2008 16:08:40
192.168.0.207, 80.243.9.34
, 401 байт)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
если прибавить четыре к четырём будет:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru