Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [avr] Вывод double с помощью fprintf() 
V
    Опции темы
kot34
Дата 23.11.2010, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.10.2008

Репутация: нет
Всего: нет



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


Это сообщение отредактировал(а) Mazzi - 23.11.2010, 16:31
PM MAIL   Вверх
UniBomb
Дата 23.11.2010, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



kot34, укажи как ты выводишь эти числа.

Это сообщение отредактировал(а) UniBomb - 24.11.2010, 12:59


--------------------
PM MAIL ICQ Skype   Вверх
kot34
Дата 23.11.2010, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.10.2008

Репутация: нет
Всего: нет



Код
 
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);
}

PM MAIL   Вверх
UniBomb
Дата 24.11.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



Итак, порыскав по интернетам я обнаружил, что по-умолчанию линкуется простой вариант 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)



--------------------
PM MAIL ICQ Skype   Вверх
kot34
Дата 24.11.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 23.10.2008

Репутация: нет
Всего: нет



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

Это сообщение отредактировал(а) kot34 - 24.11.2010, 13:31
PM MAIL   Вверх
UniBomb
Дата 24.11.2010, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 97



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


--------------------
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.1323 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.