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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [avr] Формат дробных чисел в avr 
:(
    Опции темы
kiLLProg
Дата 9.4.2011, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот уже я весь интернет перерыл, а найти информацию о формате дробных числах для AVR микроконтроллерах не могу. 
Читал про IEEE-754 и про формат предложенный Microchip. В AVR другой формат. В этом я убедился после просмотра дробного числа в памяти микроконтроллера (в AvrStudio View->Memory). 

Например: число 3.14

IEEE 754 - 4048F5C3 
Microchip - 8048F5C3
AVR         - C3F54840

Подскажите пожалуйста, где мне найти нужную информацию?
PM MAIL   Вверх
Mazzi
Дата 9.4.2011, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

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



Представление чисел с плавающей точкой зависит от компилятора. Вы каким пользуетесь? 


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
kiLLProg
Дата 10.4.2011, 05:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



WinAVR Си.
PM MAIL   Вверх
Mazzi
Дата 10.4.2011, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

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



Насколько я знаю, WinAVR использует компилятор GCC. В интернете можно найти исходники этого компилятора.
А для какой цели вам это нужно?

Добавлено через 3 минуты и 38 секунд
Внимательнее посмотрел и увидел, что это одно и то же.

IEEE 754 - 4048F5C3 
AVR         - C3F54840

Только у AVR байты расположены в обратной последовательности.



--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
kiLLProg
Дата 10.4.2011, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
Внимательнее посмотрел и увидел, что это одно и то же.

Точно! А я не замечал. Вот если бы не вывел байты в один столбик, то мы бы намного позже заметили такую простую разницу байт между ИЕЕЕ и АВР. 
Значит теперь буду записывать байты в переменную в обратном порядке, и переводить в десятичное дробное число согласно стандарту ИЕЕЕ 754.

Цитата
А для какой цели вам это нужно?

Моя задача состоит в том чтобы обрабатывать поступающие байты от некоторого устройства. Если сообщение с индификатором 001 (к примеру) то в байтах приходит дробное число, если 002 то в батах целое.  Собрать целое число из нескольких пришедших байт не проблема. А вот с дробными проблематично, тем более если не знаешь в каком виде они хранятся в памяти ЭВМ (стандарт ИЕЕЕ 754 это описывает). Далее этот набор байтов я "пересчитаю" и получу искомое дробное число (я надеюсь это возможно, ведь есть примеры пересчета 16ричного представления дробного числа в ЭВМ в десятичное дробное число). 

Если вы не знаете. C3F54840 не равно 3.14, что бы получить 3.14 нужно сделать преобразования над 16ричным числом C3F54840.

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

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


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

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

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


 




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


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

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