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

 
 
> Арифметика с фиксированной запятой, ...как выполнить приведение форматов
novlev
сообщение Mar 17 2008, 06:50
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645



Есть задача - представить чисто в формате 00ХХХХХХ ХХХХХХХХ, где первый байт - старшая часть, второй - младшая. Изначально имею просто код ацп (в единицах самой ацп), надо дальше арифметику делать. Как перевести в этот формат и считать в нем?????????
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
K_AV
сообщение Mar 17 2008, 09:49
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 492
Регистрация: 19-08-06
Пользователь №: 19 667



А наличие запятой чем-то диктуется (в смысле - нафига она вам вообще)? Не проще ли все считать целочисленно, и прямо в значениях кодов АЦП, а потом уже готовый результат смасштабировать и нарисовать десятичную точку в нужном разряде "искусственно"?
Например, код АЦп XXXX соответствует YYYY мВ = Y,YYY В wink.gif.
Вообще без необходимости не усложняйте себе жизнь. А то бывает - человек начинает городить арифметику с плавающей запятой только потому, что у него данные за пределами микроконтроллера написаны в виде десятичных дробей.
Go to the top of the page
 
+Quote Post
novlev
сообщение Mar 17 2008, 10:37
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645



я не против, но есть ТЗ. Я как инжУнер должен выдавать пакеты согласно этой бумажке. Мативировали это мне так: на том конце железяка загружена, поэтому мы ее так разгружаем, иниипет(пардон). Флоат не хотят (exp, Hb, Lb), т к на 1 байт больше. Вот теперь это мой геморой. sad.gif если есть примеры прог, поделитесь, ну или хоть урлу на теорию киньте, буду крайне признателен (имхо сроки).
Go to the top of the page
 
+Quote Post
repairDV
сообщение Mar 17 2008, 11:34
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 578
Регистрация: 7-11-06
Из: Хабаровск
Пользователь №: 22 044



Вы не указали название микроконтроллера и, если АЦП не встроенное, то его название тоже.


--------------------
Маленький нанайца. А-а. А-а. Оморочком плыл. Маленький проточка. Осетра ловил.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 17 2008, 11:34
Сообщение #5


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



float x=f(ADC); // перевели код АЦП в число, соотв. значению параметра
int y=(int)(x*k) // k - коэфф. масштабирования
Дальше можно выводить y наружу

Считать лучше именно во флоте, а преобразование формата сделать в конце, так точность больше получится

Сообщение отредактировал MrYuran - Mar 17 2008, 11:37


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
novlev
сообщение Mar 17 2008, 12:22
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645



ну контроллер полностью соответствует ветке форума - ADuC841, ацп встроенная. А вот результат надо выводить (пример) намерял я 5,12 вольта, и отправил в старшем байте 5, младшем 12.Извращенный формат.

Я наверно буду считать во флоат, а потом попробую перевести в этот извращенный форматsad.gif после адсп этот контроллер кажется таким неудобным....
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 03:40
Рейтинг@Mail.ru


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