![]() |
Модераторы: PILOT, ManiaK, Mazzi |
![]() ![]() ![]() |
|
kiLLProg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.10.2008 Репутация: нет Всего: нет |
Вот уже я весь интернет перерыл, а найти информацию о формате дробных числах для AVR микроконтроллерах не могу.
Читал про IEEE-754 и про формат предложенный Microchip. В AVR другой формат. В этом я убедился после просмотра дробного числа в памяти микроконтроллера (в AvrStudio View->Memory). Например: число 3.14 IEEE 754 - 4048F5C3 Microchip - 8048F5C3 AVR - C3F54840 Подскажите пожалуйста, где мне найти нужную информацию? |
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Представление чисел с плавающей точкой зависит от компилятора. Вы каким пользуетесь?
-------------------- Мне нужны помощники. |
|||
|
||||
kiLLProg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.10.2008 Репутация: нет Всего: нет |
WinAVR Си.
|
|||
|
||||
Mazzi |
|
|||
![]() Правильный ![]() ![]() Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
Насколько я знаю, WinAVR использует компилятор GCC. В интернете можно найти исходники этого компилятора.
А для какой цели вам это нужно? Добавлено через 3 минуты и 38 секунд Внимательнее посмотрел и увидел, что это одно и то же. IEEE 754 - 4048F5C3 AVR - C3F54840 Только у AVR байты расположены в обратной последовательности. -------------------- Мне нужны помощники. |
|||
|
||||
kiLLProg |
|
||||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.10.2008 Репутация: нет Всего: нет |
Точно! А я не замечал. Вот если бы не вывел байты в один столбик, то мы бы намного позже заметили такую простую разницу байт между ИЕЕЕ и АВР. Значит теперь буду записывать байты в переменную в обратном порядке, и переводить в десятичное дробное число согласно стандарту ИЕЕЕ 754.
Моя задача состоит в том чтобы обрабатывать поступающие байты от некоторого устройства. Если сообщение с индификатором 001 (к примеру) то в байтах приходит дробное число, если 002 то в батах целое. Собрать целое число из нескольких пришедших байт не проблема. А вот с дробными проблематично, тем более если не знаешь в каком виде они хранятся в памяти ЭВМ (стандарт ИЕЕЕ 754 это описывает). Далее этот набор байтов я "пересчитаю" и получу искомое дробное число (я надеюсь это возможно, ведь есть примеры пересчета 16ричного представления дробного числа в ЭВМ в десятичное дробное число). Если вы не знаете. C3F54840 не равно 3.14, что бы получить 3.14 нужно сделать преобразования над 16ричным числом C3F54840. Спасибо. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |