Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Преобразование в 64-бит плавающую точку
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Visor
Есть 2 целых числа, одно целая часть, другое значение после запятой. Необходимо из них сделать число 64-бит с плавающей точкой. Ни как не могу сообразить как реализовать. Посоветуйте Си алгоритм, микроконтроллер AVR. Скорость преобразования критична. Или не стоит игра свечь, и воспользоваться арифметикой с double?
rezident
Вам видимо нужно ознакомится со стандартом упаковки чисел с плавающей точкой. ПоГулите на предмет стандарта IEEE-754. Вот, например. ссылка. http://babbage.cs.qc.edu/IEEE-754/
Visor
Как активировать формат двойной точности для чисел с плавающей точкой (64-bit)?
Прописал компилятору "--64bit_doubles", но ругается, что ещё не учёл?
IgorKossak
Цитата(Visor @ Jun 7 2008, 09:05) *
ругается, что ещё не учёл?

Ну хоть бы сообщение привели.
Visor
Цитата(IgorKossak @ Jun 8 2008, 00:07) *
Ну хоть бы сообщение привели.

Error[e117]: Incompatible runtime models. Module data_send specifies that '__64bit_doubles' must be 'enabled', but module ?low_level_init has the value 'disabled'
IgorKossak
Пока Вы не раскололись о версии компилятора, платформе/МК и способе задания для компилятора (среда или командная строка), попробую предположить, что речь идёт об AVR.
Попробуйте подключить нужную библиотеку, её название должно содержать цифры 64, установите модель памяти Small, функция __low_level_init (если Вы сами её определяете) должна возвращать 1, хотя не понятно как это может повлиять на double 07.gif
А если выложите архив с минимальным проектом и всеми его настройками, то будет вообще чудненько.
Ещё идея, возможно это и никак не относится к double, а Вы просто не ту библиотеку взяли, имеется в виду clib вместо dlib или наоборот.
Visor
IgorKossak спасибо большое. По вашей наводке подключил библиотеку dlAVR-3s-64-f.r90 и всё пошло.
Вот только в мануале речь идёт о файле dlavr-3s-ec-64-f.r90 , которого нет в комплекте. (IAR for AVR
4.30A)
IgorKossak
ec означает extended core, что желательно, по крайней мере у меня для ATmega128.
f означает full, имеется в виду
Цитата
Use the full configuration of the C/EC++
runtime library. Full locale interface,
C locale, file descriptor support,
multibytes in printf and scanf, and
hex floats in strtod.
. Сильно ли оно Вам надо?
Я пользуюсь библиотекой dlAVR-3s-ec_mul-64-n.r90, где mul означает поддержку аппаратного умножителя. Ваш МК его не имеет?
Кстати dlAVR-3s-ec_mul-64-f.r90 тоже имеется, а вот dlavr-3s-ec-64-f.r90 действительно нет, но есть dlAVR-3s-ec_nomul-64-f.r90
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.