Как передать float по usart в avr studio

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 147
Зарегистрирован: Вс мар 09, 2014 09:13:00

Сообщение DenChik87 »

Подскажите в том коде что я написал значение float передано правильно? Протеус выдает значение C3 F5 48 40, это и есть значение 3,14 в виде 4х байт? И как сделать чтобы терминал протеуса интерпретировал значение 4х байт, как число с плавующей точкой?
Еще пробовал так(этот пример нашел на сайте):

void tx_float(float a)
{
unsigned char *ad,i;
ad=(unsigned char*)&a;
for(i=0;i<4;i++)
{
delay_ms(1);
putchar(*(ad++));
}
}
Но в этом случае в терменале протеуса пусто. Вообще если пихаю в putchar байт, терминал протеуса его не выводит
Вложения
usart.png
(35.08 КБ) 566 скачиваний
Реклама
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Если хотите видеть число в терминале, то и передавайте его как строку. Зачем делить на байты ? :dont_know:
DenChik87 писал(а):Вообще если пихаю в putchar байт, терминал протеуса его не выводит
Вообще, терминал выводит текст, а не значений байтов. По этому, пихать нужно символ, а не что-то там...
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 147
Зарегистрирован: Вс мар 09, 2014 09:13:00

Сообщение DenChik87 »

Аlex писал(а):Если хотите видеть число в терминале, то и передавайте его как строку. Зачем делить на байты ? :dont_know:
А как это сделать, функцией printf? Я пробовал ее использовать - не работает. Для примера на atmega 328p код накидал, но в терминале пустота. Библиотеку libprintf_flt добавил. Можете пример кода привести?
Вложения
mega328.png
(175.56 КБ) 529 скачиваний
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

Не во всех компиляторах по-умолчанию включен вывод float в sprintf. Поковыряйтесь в настройках.
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «AVR»