Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: DTOA на MSP430
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
Sinoptic555
Подскажите, нет ли для MSP430 нормальной
функции конвертирования double в строку char*.

Надо вывести число double на ЖК индикатор.

Может кто-то использует какие-то библитеки или перенес функцию,
что то в IAR встроенных функций не могу найти.

Спасибо.
CSB
Если Вам на С, то на форуме куча ответов на этот вопрос.
Sinoptic555
Цитата(CSB @ Nov 28 2007, 16:38) *
Если Вам на С, то на форуме куча ответов на этот вопрос.

Киньте ссылку если не трудно, смотрел, не могу найти.
... может как-то не так ищу ... cranky.gif
CSB
Прочтите эту статью, возможно она Вам поможет http://citforum.ru/howto/smart-questions-ru.shtml

Взял первое что попалось: http://caxapa.ru/79812.html
Набрал в поиске itoa. Разберитесь как работает функция и переделайте под переменные с плавающей запятой.
VAI
Цитата
Подскажите, нет ли для MSP430 нормальнойфункции конвертирования double в строку char*.Надо вывести число double на ЖК индикатор.

А чем printf() стандартный не удовлетворяет?
У Вас должна быть корректно написана функция putchar(), выводящая символ на ЖКИ.
Я так выводил и на 7сегментный и на символьный ЖКИ.
Sinoptic555
Цитата(VAI @ Nov 28 2007, 17:41) *
А чем printf() стандартный не удовлетворяет?
У Вас должна быть корректно написана функция putchar(), выводящая символ на ЖКИ.
Я так выводил и на 7сегментный и на символьный ЖКИ.


Да! printf() - это то что нужно! yeah.gif

To CSB: Это абсолютно не подходит, вы ведь наверное знаете что битовое представление типа double/float в корне отличается от integer, и то что могут быть потери в точности при представлении
больших чисел double вы тоже, наверняка, знаете wink.gif
CSB
Формат double тут не причем.

Берете Ваше double/float, переводите в целое путем умножения на 1Е+n (n - точность представления числа). Переводите в строку. Десятичный разделитель выводится исходя из значения n. При умножении можно потерять последнюю цифру числа, но такое же будет и при использовании printf().
Sinoptic555
Функция printf() тяжеловата получается. sad.gif
Выходной .exe (в IAR на Release) из 4 кб превращается в 24 кб (!) .
CSB
Я сначала и предположил что Вы попытались использовать printf() и увидев сколько она кушает начали поиски более легкой функции.

Сделайте как я предложил и у Вас будет компактная функция.

Хотя можно поиграться с printf() и оптимизацией.
VAI
Вчера вроде выкладывал файл, но что-то нету моего поста.
Вкладываю printf(), который мы используем с мелкими MSP. Сделал его из исходников для ПИКа :-).
Используйте, как хотите.
M_Z
Цитата(Sinoptic555 @ Nov 29 2007, 15:35) *
Функция printf() тяжеловата получается. sad.gif
Выходной .exe (в IAR на Release) из 4 кб превращается в 24 кб (!) .


Странно по поводу 24кБ

Я использую функции типа
sprintf(RS,"%.2f",(Speed/10));
и размер ПО 7022 байта. Хотя там немало математики и обмена и вывод графический индикатор.
Oleg Galizin
Вот еще маленькая функция преобразования float в char*
Это не окончательный вариант и может не работать. Но идея прозрачна - выделение целой части
потом вычитание этого целого и умножение на 10 и так в цикле.Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.