Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > [avr] Вывод double с помощью fprintf()


Автор: kot34 23.11.2010, 15:41
Добрый день.
Есть ATmega64 c выводом на DG-12864S2FBLY(ЖК-матрица 128х64).
Компилятор WinAVR.
Вывод на дисплей для букв и целых чисел, через fprintf работает.
Проблема в том что fprintf выводит '?' вместо чисел типа double и float.
Подскажите в чем может быть дело.

Автор: UniBomb 23.11.2010, 16:26
kot34, укажи как ты выводишь эти числа.

Автор: kot34 23.11.2010, 16:58
Код
 
extern unsigned char WriteChar(char charToWrite, FILE *stream) // вывод непосредственно на дисплей

FILE lcd_str = FDEV_SETUP_STREAM(WriteChar, NULL, _FDEV_SETUP_WRITE);
main()
{
...
stdout = &lcd_str;
fprintf(stdout, "%.3f", 3.44);
}

Автор: UniBomb 24.11.2010, 12:17
Итак, порыскав по интернетам я обнаружил, что по-умолчанию линкуется простой вариант prinf без поддержки float. Что бы её включить надо немного подправить makefile. Найди в своём мейкфайле такой участок:

Код

#---------------- Library Options ----------------
# Minimalistic printf version
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min

# Floating point printf version (requires MATH_LIB = -lm below)
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt

# If this is left blank, then it will use the Standard printf version.
PRINTF_LIB = 
#PRINTF_LIB = $(PRINTF_LIB_MIN)
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)


и замени на такой:

Код

#---------------- Library Options ----------------
# Minimalistic printf version
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min

# Floating point printf version (requires MATH_LIB = -lm below)
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt

# If this is left blank, then it will use the Standard printf version.
#PRINTF_LIB = $(PRINTF_LIB_MIN)
PRINTF_LIB = $(PRINTF_LIB_FLOAT)

Автор: kot34 24.11.2010, 13:30
Спасибо за помощь.
Отвык писать makefile руками, так что потребовалось время что бы адоптировать этот подход к Avr Studio.
Вот здесь, инструкция с картинками для Avr Studio.
http://microsin.ru/content/view/1099/44/

Автор: UniBomb 24.11.2010, 13:43
kot34, а у меня как-то наоборот выходит. Я от AvrStudio и MFile отошёл в сторону простого блокнота с подсветкой кода  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)