Использование Float в AVR

Ответить
Ingwar
Полковник
Сообщения: 1802
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 157
Откуда: Ленобласть
Имя: Игорь

Использование Float в AVR

#1

Сообщение Ingwar » 08.01.2023{, 18:15}

Для кого-то информация давно известна.
Ну а для тех кто не любит читать довожу до сведения - использование математических операций с переменными типа Float на 8ми битных камнях AVR чревато "нежданчиками" :smile110:
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

artemka19
Лейтенант
Сообщения: 471
Зарегистрирован: 03.09.2020{, 15:41}
Репутация: 194
Откуда: Питер
Имя: Артем

Использование Float в AVR

#2

Сообщение artemka19 » 08.01.2023{, 18:27}

пример бы не помешал)

Naladchik
Капитан
Сообщения: 720
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 122
Откуда: Новосибирск
Имя: Павел

Использование Float в AVR

#3

Сообщение Naladchik » 08.01.2023{, 18:49}

Ingwar писал(а):
08.01.2023{, 18:15}
... на 8ми битных камнях AVR чревато "нежданчиками"
По поводу нежданчиков любопытная информация попалась на сайте Гайвера.
... Если при умножении или делении в текущем действии результат превысит 32768 – ячейка переполнится и мы получим некорректный результат. Для исправления ситуации нужно .... ".
Сам не проверял, за достоверность не ручаюсь, но как информацию для размышлений для себя принял.
Win7-64. FLProg Portable.
Изображение

Ingwar
Полковник
Сообщения: 1802
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 157
Откуда: Ленобласть
Имя: Игорь

Использование Float в AVR

#4

Сообщение Ingwar » 08.01.2023{, 19:09}

artemka19 писал(а):
08.01.2023{, 18:27}
пример бы не помешал)
Выкладывать проект, на котором "споткнулся" не буду, поскольку не искал в нем локальное проблемное место.
Просто опишу - делал дозирующий насос с калибровкой по прокачиваемому продукту и результат фактического дозирования отличался от заданного до и выше 10%. Большая часть математики была на флоат. И да, вычисления производились не в каждом цикле, а только однократно по вызову в настройках :smile38: . Так вот, переход на целые числа сходу изменил погрешность дозирования до 0,3%.
Ну и погуглить про Float без FPU не трудно.
Самое простое описание.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
RedSky
Лейтенант
Сообщения: 536
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 65
Откуда: Днепропетровск
Имя: Алексей

Использование Float в AVR

#5

Сообщение RedSky » 08.01.2023{, 19:26}

Naladchik писал(а):
08.01.2023{, 18:49}
Если при умножении или делении в текущем действии результат превысит 32768
Это он о типе int.
Float не рекомендуется сравнивать на ==, >=,<=. Но это не только в avr.

Ответить

Вернуться в «Справочники и даташиты»