Страница 1 из 1

Си: перевод результата из типа float в string.

Добавлено: Пт дек 24, 2010 09:51:14
Slavast
Всем добрый день!
Уже 3-й день не могу перевести полученный результат с АЦП (деленный на коэффициент) с типа с плавающей запятой в символьный для вывода на UART терминала компьютера. Без преобразования выводит квадраты.
Поделитесь опытом, может есть команда или процедура?
Спасибо!

Re: Си: перевод результата из типа float в string.

Добавлено: Пт дек 24, 2010 11:36:56
ARV
если вы настолько расточительны, что используете в своем микроконтроллерном проекте тип float, то почему не используете возможности расточительной функции printf или sprintf для вывода этих чисел? только активируйте в своем компиляторе "расширенную поддержку форматирования" этих функций, т.к. по умолчанию наверняка тип float не поддерживается ими (это, кстати, вам намек: если компилятор по умолчанию считает, что float не нужно поддерживать - возможно, он прав?)

Re: Си: перевод результата из типа float в string.

Добавлено: Пт дек 24, 2010 11:58:40
Fasterpast
Озвучьте компилятор ) CvAVR, например, нормально всё переводит. На других AVR компиляторах я на самом деле подобными извращениями не занимался, ибо в этом месте получаются действительно огромные простои. Если нужно работать с float, советую поискать другой контроллер или городить "сопроцессор"...

Re: Си: перевод результата из типа float в string.

Добавлено: Пт дек 24, 2010 12:05:10
ARV
Fasterpast писал(а):CvAVR, например, нормально всё переводит. На других AVR компиляторах я на самом деле подобными извращениями не занимался, ибо в этом месте получаются действительно огромные простои.
это как следует понимать: CVAVR работает с float-ами гораздо оптимальнее прочих компиляторов или ваше высказывание о "простоях" относится ко всем компиляторам, просто вам не довелось с другими поработать?

Re: Си: перевод результата из типа float в string.

Добавлено: Пт дек 24, 2010 12:38:13
Slavast
Sprintf пробовал.
не работает.

char buf[N];
sprintf(buf,"%f",ab);

for (i=0; i<5; i++)
{
t = s;
USART_Transmit(t); // подпрограммка вывода на UART
}

Re: Си: перевод результата из типа float в string.

Добавлено: Пт дек 24, 2010 12:54:13
Fasterpast
ARV писал(а):
Fasterpast писал(а):CvAVR, например, нормально всё переводит. На других AVR компиляторах я на самом деле подобными извращениями не занимался, ибо в этом месте получаются действительно огромные простои.
это как следует понимать: CVAVR работает с float-ами гораздо оптимальнее прочих компиляторов или ваше высказывание о "простоях" относится ко всем компиляторам, просто вам не довелось с другими поработать?
Это следует понимать как:
1.огромные задержки независимо от компилятора
2.работал с float только в cvavr

Сорри, если неправильно выразился.

Re: Си: перевод результата из типа float в string.

Добавлено: Пт дек 24, 2010 12:59:13
ARV
Slavast писал(а):Sprintf пробовал.
не работает.
а вы включали поддержку sprintf-ом типа float? я не зря об этом сказал в своем первом посте: по умолчанию она отключена