|
Согласование переменных разных типов |
|
|
|
 |
Ответов
|
Feb 5 2010, 12:09
|

Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 12-01-09
Из: Minsk (BY)
Пользователь №: 43 259

|
Решил попробовать использовать такой вариант кода (всё-таки float): Код char* get_freq(uint32_t Fr, uint8_t type) { static char Str[16]; static float tmp; tmp = Fr / 1000U; switch(type) { case (0): //KHz sprintf(Str, "%4.6fKHz", (double)tmp); return Str; break; /* case (1): //MHz sprintf(Str, "%4.6fMHz", (double)tmp); return Str; break; */ } return 0; } int main(void) { uint32_t i = 560000; lcd_init(); /*...*/ lcd_putdata(1, get_freq(i, 0)); /*...*/ } Проблема в sprintf(Str, "%4.6fKHz", (double)tmp), так как в итоге ничего не отображается (просто пустая строка). Почему не хочет показывать, ведь вроде функцию вызвал правильно?
|
|
|
|
|
Feb 5 2010, 13:31
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(GoodNews @ Feb 5 2010, 15:09)  Почему не хочет показывать, ведь вроде функцию вызвал правильно? Функция printf (и еже с ними) ну очень прожорлива до памяти. Чтобы как-то это обойти, обычно, поставляется несколько вариантов библиотек, в которых от самых "худых" функций (поддерживают только сhar и int) до самых навороченных (это Ваш вариант - поддерживают плавучку). В зависимости от используемой среды разработки нужно как-то указать: какой вариант использовать... Цитата(GoodNews @ Feb 5 2010, 15:09)  Решил попробовать использовать такой вариант кода (всё-таки float): Код char* get_freq(uint32_t Fr, uint8_t type) { static char Str[16]; static float tmp; tmp = Fr / 1000U; /*...*/ } Такое вычисление tmp - никуда не годится! Правильно записать tmp = Fr / 1000.0; Цитата(GoodNews @ Feb 5 2010, 15:09)  Код sprintf(Str, "%4.6fKHz", (double)tmp); Преобразование к double - абсолютно лишнее
|
|
|
|
|
Feb 5 2010, 14:02
|

Частый гость
 
Группа: Участник
Сообщений: 88
Регистрация: 12-01-09
Из: Minsk (BY)
Пользователь №: 43 259

|
Цитата(Палыч @ Feb 5 2010, 15:27)  Функция printf (и еже с ними) ну очень прожорлива до памяти. Чтобы как-то это обойти, обычно, поставляется несколько вариантов библиотек, в которых от самых "худых" функций (поддерживают только сhar и int) до самых навороченных (это Ваш вариант - поддерживают плавучку). В зависимости от используемой среды разработки нужно как-то указать: какой вариант использовать...
Такое вычисление tmp - никуда не годится! Правильно записать tmp = Fr / 1000.0;  среда разработки - Vim, набор библиотек - avr-libc, компилятор - avr-gcc, библиотека stdio.h из комплекта avr-libc. Цитата(Палыч @ Feb 5 2010, 15:31)  Преобразование к double - абсолютно лишнее без него ругается, что tmp - float, а %4.6f - double!
Сообщение отредактировал GoodNews - Feb 5 2010, 14:03
|
|
|
|
Сообщений в этой теме
GoodNews Согласование переменных разных типов Feb 3 2010, 22:22 volodya Цитата(GoodNews @ Feb 4 2010, 00:22) Если... Feb 4 2010, 06:36 Палыч Цитата(GoodNews @ Feb 4 2010, 01:22) Как ... Feb 4 2010, 07:44 GoodNews Цитата(Палыч @ Feb 4 2010, 09:44) Вам - ч... Feb 4 2010, 08:54  Палыч Цитата(GoodNews @ Feb 4 2010, 11:54) Я хо... Feb 4 2010, 09:05   GoodNews Цитата(Палыч @ Feb 4 2010, 11:05) Ну, так... Feb 4 2010, 09:20    Палыч Цитата(GoodNews @ Feb 4 2010, 12:20) Тут ... Feb 4 2010, 09:52    rezident Цитата(GoodNews @ Feb 4 2010, 14:20) Тут ... Feb 4 2010, 13:18     GoodNews Цитата(rezident @ Feb 4 2010, 15:18) Да, ... Feb 4 2010, 16:12 ukpyr http://www.avrfreaks.net/index.php?name=PN...;high... Feb 5 2010, 17:17 GoodNews Цитата(ukpyr @ Feb 5 2010, 19:17) http://... Feb 5 2010, 17:48 ukpyr ЦитатаПроблема в sprintf(Str, "%4.6fKHz... Feb 5 2010, 19:06 GoodNews Цитата(ukpyr @ Feb 5 2010, 21:06) а что в... Feb 5 2010, 19:35 GoodNews На данный момент решён вопрос с отображение значен... Feb 6 2010, 17:29 GoodNews Вариант #2. В таком виде - работает. Если раскомме... Feb 7 2010, 12:30 ReAl Если уж использовать в WinAVR printf, то тогда так... Feb 7 2010, 13:16 GoodNews Цитата(ReAl @ Feb 7 2010, 15:16) Если уж ... Feb 7 2010, 15:49  ReAl Цитата(GoodNews @ Feb 7 2010, 17:49) Собс... Feb 7 2010, 17:05   GoodNews Цитата(ReAl @ Feb 7 2010, 19:05) Да это я... Feb 7 2010, 17:51    ReAl Цитата(GoodNews @ Feb 7 2010, 19:51) Ну т... Feb 14 2010, 09:52 XVR Пока видна 1 ошибка - sizeof(buf) в hzToStr и main... Feb 8 2010, 11:01 GoodNews Цитата(XVR @ Feb 8 2010, 13:01) Пока видн... Feb 8 2010, 16:37 GoodNews 2ReAl:
понятно. т.е. размерность массива buf вычис... Feb 21 2010, 18:56
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|