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

 
 
 
Reply to this topicStart new topic
> DTOA на MSP430
Sinoptic555
сообщение Nov 28 2007, 09:36
Сообщение #1


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

Группа: Новичок
Сообщений: 91
Регистрация: 22-08-06
Пользователь №: 19 737



Подскажите, нет ли для MSP430 нормальной
функции конвертирования double в строку char*.

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

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

Спасибо.
Go to the top of the page
 
+Quote Post
CSB
сообщение Nov 28 2007, 11:38
Сообщение #2


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

Группа: Новичок
Сообщений: 100
Регистрация: 9-03-06
Пользователь №: 15 088



Если Вам на С, то на форуме куча ответов на этот вопрос.
Go to the top of the page
 
+Quote Post
Sinoptic555
сообщение Nov 28 2007, 11:51
Сообщение #3


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

Группа: Новичок
Сообщений: 91
Регистрация: 22-08-06
Пользователь №: 19 737



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

Киньте ссылку если не трудно, смотрел, не могу найти.
... может как-то не так ищу ... cranky.gif
Go to the top of the page
 
+Quote Post
CSB
сообщение Nov 28 2007, 11:57
Сообщение #4


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

Группа: Новичок
Сообщений: 100
Регистрация: 9-03-06
Пользователь №: 15 088



Прочтите эту статью, возможно она Вам поможет http://citforum.ru/howto/smart-questions-ru.shtml

Взял первое что попалось: http://caxapa.ru/79812.html
Набрал в поиске itoa. Разберитесь как работает функция и переделайте под переменные с плавающей запятой.
Go to the top of the page
 
+Quote Post
VAI
сообщение Nov 28 2007, 12:41
Сообщение #5


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Цитата
Подскажите, нет ли для MSP430 нормальнойфункции конвертирования double в строку char*.Надо вывести число double на ЖК индикатор.

А чем printf() стандартный не удовлетворяет?
У Вас должна быть корректно написана функция putchar(), выводящая символ на ЖКИ.
Я так выводил и на 7сегментный и на символьный ЖКИ.


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
Sinoptic555
сообщение Nov 28 2007, 13:01
Сообщение #6


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

Группа: Новичок
Сообщений: 91
Регистрация: 22-08-06
Пользователь №: 19 737



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


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

To CSB: Это абсолютно не подходит, вы ведь наверное знаете что битовое представление типа double/float в корне отличается от integer, и то что могут быть потери в точности при представлении
больших чисел double вы тоже, наверняка, знаете wink.gif
Go to the top of the page
 
+Quote Post
CSB
сообщение Nov 28 2007, 13:37
Сообщение #7


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

Группа: Новичок
Сообщений: 100
Регистрация: 9-03-06
Пользователь №: 15 088



Формат double тут не причем.

Берете Ваше double/float, переводите в целое путем умножения на 1Е+n (n - точность представления числа). Переводите в строку. Десятичный разделитель выводится исходя из значения n. При умножении можно потерять последнюю цифру числа, но такое же будет и при использовании printf().
Go to the top of the page
 
+Quote Post
Sinoptic555
сообщение Nov 29 2007, 11:35
Сообщение #8


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

Группа: Новичок
Сообщений: 91
Регистрация: 22-08-06
Пользователь №: 19 737



Функция printf() тяжеловата получается. sad.gif
Выходной .exe (в IAR на Release) из 4 кб превращается в 24 кб (!) .

Сообщение отредактировал Sinoptic555 - Nov 29 2007, 11:36
Go to the top of the page
 
+Quote Post
CSB
сообщение Nov 29 2007, 11:48
Сообщение #9


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

Группа: Новичок
Сообщений: 100
Регистрация: 9-03-06
Пользователь №: 15 088



Я сначала и предположил что Вы попытались использовать printf() и увидев сколько она кушает начали поиски более легкой функции.

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

Хотя можно поиграться с printf() и оптимизацией.

Сообщение отредактировал CSB - Nov 29 2007, 11:49
Go to the top of the page
 
+Quote Post
VAI
сообщение Nov 29 2007, 12:50
Сообщение #10


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



Вчера вроде выкладывал файл, но что-то нету моего поста.
Вкладываю printf(), который мы используем с мелкими MSP. Сделал его из исходников для ПИКа :-).
Используйте, как хотите.
Прикрепленные файлы
Прикрепленный файл  myprnt.rar ( 2.19 килобайт ) Кол-во скачиваний: 75
 


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
M_Z
сообщение Nov 30 2007, 20:47
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 483
Регистрация: 1-09-06
Из: Гродно РБ
Пользователь №: 20 011



Цитата(Sinoptic555 @ Nov 29 2007, 15:35) *
Функция printf() тяжеловата получается. sad.gif
Выходной .exe (в IAR на Release) из 4 кб превращается в 24 кб (!) .


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

Я использую функции типа
sprintf(RS,"%.2f",(Speed/10));
и размер ПО 7022 байта. Хотя там немало математики и обмена и вывод графический индикатор.
Go to the top of the page
 
+Quote Post
Oleg Galizin
сообщение Dec 5 2007, 09:50
Сообщение #12





Группа: Участник
Сообщений: 14
Регистрация: 25-03-07
Пользователь №: 26 499



Вот еще маленькая функция преобразования float в char*
Это не окончательный вариант и может не работать. Но идея прозрачна - выделение целой части
потом вычитание этого целого и умножение на 10 и так в цикле.Прикрепленный файл  display_float.zip ( 956 байт ) Кол-во скачиваний: 145
Go to the top of the page
 
+Quote Post

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

 


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


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