реклама на сайте
подробности

 
 
> Float в MSP430
SofuS
сообщение Nov 2 2006, 09:46
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 9-10-06
Пользователь №: 21 115



Есть: контроллер MSP430F149. Контроллер передает по UART(через СОМ) данные, которые я принимаю на клиентской программе, написанной на С++. Данные на мк представлены в float. Если предварительно
библиотечной функ-ей на самом контроллере переводить данные из float в двоично-десятичные, то я принимаю корректные значения. Но время для обработки в контроллере критично и оч. желательно передавать сразу в float, как есть. Передавая float и принимая их сразу в C++ тоже как float ...я получаю не совсем то, что должно быть. Вопрос : TI-ский float как-то отличается от общепринятого (IEEE)?Или у меня ошибка в сишной проге и все должно работать верно? Если TI float отличается, то не поделитесь сцылками с описанием TI float -а.(сам не нашел). Заранее благодарен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
-=MISHA=-
сообщение Nov 2 2006, 10:43
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 5-07-06
Пользователь №: 18 607



Переменные типа float можно разложить на байты с помощью union.
Передать полученные 4 байта по uart-у на комп.
Затем, на компе, обратно собрать в переменную типа float.

Например:
Создаём такой тип:

typedef union {
float ft;
unsigned char bt[4];
}MyType;

Объявляем переменные:
MyType tmp;
float f;
unsigned char b[4];

Перед передачей раскладываем float на байты:

tmp.ft = f;
b[0] = tmp.bt[0];
b[1] = tmp.bt[1];
b[2] = tmp.bt[2];
b[3] = tmp.bt[3];

И теперь в uart кидаем полученные байты b[0],b[1],b[2],b[3]

На компе, по такому же принципу, получаем из 4-х байт float.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 04:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016