Sinoptic555 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба Подскажите, нет ли для MSP430 нормальной функции конвертирования double в строку char*. Надо вывести число double на ЖК индикатор. Может кто-то использует какие-то библитеки или перенес функцию, что то в IAR встроенных функций не могу найти. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CSB 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба Если Вам на С, то на форуме куча ответов на этот вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sinoptic555 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба Если Вам на С, то на форуме куча ответов на этот вопрос. Киньте ссылку если не трудно, смотрел, не могу найти. ... может как-то не так ищу ... :cranky: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CSB 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба Прочтите эту статью, возможно она Вам поможет http://citforum.ru/howto/smart-questions-ru.shtml Взял первое что попалось: http://caxapa.ru/79812.html Набрал в поиске itoa. Разберитесь как работает функция и переделайте под переменные с плавающей запятой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VAI 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба Подскажите, нет ли для MSP430 нормальнойфункции конвертирования double в строку char*.Надо вывести число double на ЖК индикатор. А чем printf() стандартный не удовлетворяет? У Вас должна быть корректно написана функция putchar(), выводящая символ на ЖКИ. Я так выводил и на 7сегментный и на символьный ЖКИ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sinoptic555 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба А чем printf() стандартный не удовлетворяет? У Вас должна быть корректно написана функция putchar(), выводящая символ на ЖКИ. Я так выводил и на 7сегментный и на символьный ЖКИ. Да! printf() - это то что нужно! :yeah: To CSB: Это абсолютно не подходит, вы ведь наверное знаете что битовое представление типа double/float в корне отличается от integer, и то что могут быть потери в точности при представлении больших чисел double вы тоже, наверняка, знаете ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CSB 0 28 ноября, 2007 Опубликовано 28 ноября, 2007 · Жалоба Формат double тут не причем. Берете Ваше double/float, переводите в целое путем умножения на 1Е+n (n - точность представления числа). Переводите в строку. Десятичный разделитель выводится исходя из значения n. При умножении можно потерять последнюю цифру числа, но такое же будет и при использовании printf(). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sinoptic555 0 29 ноября, 2007 Опубликовано 29 ноября, 2007 (изменено) · Жалоба Функция printf() тяжеловата получается. :( Выходной .exe (в IAR на Release) из 4 кб превращается в 24 кб (!) . Изменено 29 ноября, 2007 пользователем Sinoptic555 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CSB 0 29 ноября, 2007 Опубликовано 29 ноября, 2007 (изменено) · Жалоба Я сначала и предположил что Вы попытались использовать printf() и увидев сколько она кушает начали поиски более легкой функции. Сделайте как я предложил и у Вас будет компактная функция. Хотя можно поиграться с printf() и оптимизацией. Изменено 29 ноября, 2007 пользователем CSB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VAI 0 29 ноября, 2007 Опубликовано 29 ноября, 2007 · Жалоба Вчера вроде выкладывал файл, но что-то нету моего поста. Вкладываю printf(), который мы используем с мелкими MSP. Сделал его из исходников для ПИКа :-). Используйте, как хотите. myprnt.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
M_Z 0 30 ноября, 2007 Опубликовано 30 ноября, 2007 · Жалоба Функция printf() тяжеловата получается. :( Выходной .exe (в IAR на Release) из 4 кб превращается в 24 кб (!) . Странно по поводу 24кБ Я использую функции типа sprintf(RS,"%.2f",(Speed/10)); и размер ПО 7022 байта. Хотя там немало математики и обмена и вывод графический индикатор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Galizin 0 5 декабря, 2007 Опубликовано 5 декабря, 2007 · Жалоба Вот еще маленькая функция преобразования float в char* Это не окончательный вариант и может не работать. Но идея прозрачна - выделение целой части потом вычитание этого целого и умножение на 10 и так в цикле.display_float.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться