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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> 64-x битный double
Skaf
сообщение Jan 11 2012, 08:33
Сообщение #1


Местный
***

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



Всем привет.

Пользуюсь AVRGCC

Подключаю глонасс-приемник к ATXMega64A1. Проблема заключается в том, что бинарный протокол обмена данными с глонасс-примником содержит 64 битные цифры с плавающей точкой- double. На авр double 32 бита.

Есть ли 64 битный тип с плавающей точкой? Если нет, то как поступить в данной ситуации?
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 11 2012, 09:49
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



а long double тоже 32 бита?
Go to the top of the page
 
+Quote Post
OlegNS
сообщение Jan 11 2012, 09:50
Сообщение #3


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

Группа: Свой
Сообщений: 97
Регистрация: 25-09-06
Пользователь №: 20 664



Два раза по double )
Go to the top of the page
 
+Quote Post
maksimp
сообщение Jan 11 2012, 09:53
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(Skaf @ Jan 11 2012, 11:33) *
64 битные цифры с плавающей точкой-
как поступить в данной ситуации?

Трактовать данные как массив из четырёх short (или unsigned short). Разобраться где там знак, порядок и мантисса. Выделять их отдельно, и всё ручками преобразовывать к нужному виду.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 11 2012, 10:26
Сообщение #5


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Вроде ГЦЦ с опцией -mfloat64
Но я лично не пробовал
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 11 2012, 10:54
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(_Pasha @ Jan 11 2012, 14:26) *
Вроде ГЦЦ с опцией -mfloat64

Для AVR эта опция не работает...
Выход, imho, один: принять восемь байт (в структуру или в переменную, длинною 64 бита - long long), а дальше - преобразовать самодельной функцией к 32-битному float/double
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 11 2012, 11:33
Сообщение #7


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Палыч @ Jan 11 2012, 14:54) *
Для AVR эта опция не работает...
Выход, imho, один: принять восемь байт (в структуру или в переменную, длинною 64 бита - long long), а дальше - преобразовать самодельной функцией к 32-битному float/double

Если так, то это засада: мантиссу обрезать можно, а экспоненту как 11 бит в 8 преобразовать?
Надо все-таки у Клена <float.h> посмотреть.

Сообщение отредактировал _Pasha - Jan 11 2012, 11:35
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Jan 11 2012, 11:37
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(_Pasha @ Jan 11 2012, 14:33) *
Если так, то это засада: мантиссу обрезать можно, а экспоненту как 11 бит в 8 преобразовать?
Надо все-таки у Клена <float.h> посмотреть.

+- бесконечность например. Тут надо уже на задачу смотреть - возможно заложено 64 бита, а числа ходят маленькие...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 11 2012, 11:42
Сообщение #9


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Непомнящий Евгений @ Jan 11 2012, 15:37) *
+- бесконечность например. Тут надо уже на задачу смотреть - возможно заложено 64 бита, а числа ходят маленькие...

Вопрос к ТС, ибо если там какие-то коэффициенты аппроксимации присутствуют, например, то из песни слов не выбросишь.

Сообщение отредактировал _Pasha - Jan 11 2012, 11:42
Go to the top of the page
 
+Quote Post
Skaf
сообщение Jan 12 2012, 06:23
Сообщение #10


Местный
***

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



Цитата
Вопрос к ТС, ибо если там какие-то коэффициенты аппроксимации присутствуют, например, то из песни слов не выбросишь.


Да нет, видимо что-то выбросить можно. Они в этом типе там все гонят. И широту и долготу и высоту и скорость движения и даже время. Меня собственно именно эти поля и интересуют.

Цель- получить удобоваримые цифры для отображения на экране через OSD (наложить на аналоговый видеосигнал).

Я тут в инете нашел какую-то библиотечку для работы с 64 битным флоатом на АВР. Умеет с ними арифметические действия делать и преобразовывать в 32 бита. Пока не упсел пощупать, но если она нормально заработает- выложу ссылочку.

Сообщение отредактировал Skaf - Jan 12 2012, 06:21
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jan 12 2012, 06:47
Сообщение #11


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(Skaf @ Jan 11 2012, 11:33) *
заключается в том, что бинарный протокол
Может всё-таки проще будет переключиться на NMEA протокол?


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Skaf
сообщение Jan 12 2012, 10:20
Сообщение #12


Местный
***

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



Цитата
Может всё-таки проще будет переключиться на NMEA протокол?


Действительно может. Попробую и так и так.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 12 2012, 14:38
Сообщение #13


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Хм, если double на AVR 32 битный, то float сколько - неужели 16 битный?
Сорри за офтоп sm.gif
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 12 2012, 15:45
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(sonycman @ Jan 12 2012, 18:38) *
Хм, если double на AVR 32 битный, то float сколько - неужели 16 битный?

В GCC для AVR: float = double
Go to the top of the page
 
+Quote Post
maksimp
сообщение Jan 13 2012, 06:13
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(Skaf @ Jan 12 2012, 09:23) *
Я тут в инете нашел какую-то библиотечку для работы с 64 битным флоатом на АВР. Умеет с ними арифметические действия делать и преобразовывать в 32 бита.

Можно ссылку?
Go to the top of the page
 
+Quote Post

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

 


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


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