stm32 настройка и сохранение вещественных чисел float.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
stm32 настройка и сохранение вещественных чисел float.
У меня возник вопрос .Есть вещественное число.Как мне организовать правильно увеличения инкремента.Как выбрать шаг?.И каким образом его сохранить в EEPROM.И в flash памяти?
- Реклама
Re: stm32 настройка и сохранение вещественных чисел float.
Формат float занимает 4 байта под число одинарной точности. Формат double - 8 байт под число двойной точности. Вот с таким шагом их и хранить.
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: stm32 настройка и сохранение вещественных чисел float.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4241229#p4241229"]каким образом его сохранить в EEPROM.И в flash памяти?[/uquote]
Есть смутное подозрение, что ваша затея хранить флоат ничем не обоснована. Флоат - это не просто дробное число. Просто дробные числа можно хранить в целочисленном формате.
Есть смутное подозрение, что ваша затея хранить флоат ничем не обоснована. Флоат - это не просто дробное число. Просто дробные числа можно хранить в целочисленном формате.
Re: stm32 настройка и сохранение вещественных чисел float.
А я вообще не понял вопроса, у меня он как: "выбрать шаг инкремента для float"... это, как минимум, странно.
Re: stm32 настройка и сохранение вещественных чисел float.
[uquote="КРАМ",url="/forum/viewtopic.php?p=4241244#p4241244"]Есть смутное подозрение, что ваша затея хранить флоат ничем не обоснована. Флоат - это не просто дробное число. Просто дробные числа можно хранить в целочисленном формате.[/uquote]Боюсь от Вашей фразы ТС вообще в exception выпадет. 
- Реклама
Re: stm32 настройка и сохранение вещественных чисел float.
Вероятно имеется ввиду инкремент указателя на float применительно к тому, сколько места выделить в еепромке под переменную float.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 настройка и сохранение вещественных чисел float.
По предыдущим сообщениям.float десятые от целого числа.А double сотые или я ошибаюсь.Значит инкремент 0.1 минимум для float а для double 0.01?А ка же сохранить это число в памяти EEPROM?
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: stm32 настройка и сохранение вещественных чисел float.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4241321#p4241321"]По предыдущим сообщениям.float десятые от целого числа.[/uquote]
Шозабред?
Флоат - это ПЛАВАЮЩАЯ запятая. Флоат перекрывает диапазон от 1,2*10^−38 до 3,4*10^+38. Флоат имеет нелинейное разрешение и никакой "инкремент" к нему не применим по определению.
Тоже самое и с даблом. Только у него диапазон чисел другой.
Шозабред?
Флоат - это ПЛАВАЮЩАЯ запятая. Флоат перекрывает диапазон от 1,2*10^−38 до 3,4*10^+38. Флоат имеет нелинейное разрешение и никакой "инкремент" к нему не применим по определению.
Тоже самое и с даблом. Только у него диапазон чисел другой.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 настройка и сохранение вещественных чисел float.
Ну хорошо инкремент не применим.Ну а как сохранить данные числа ?
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: stm32 настройка и сохранение вещественных чисел float.
Сохранять как обычные 32-х (для флоат) или 64-х (для дабл) разрядные числа. Только у меня остался вопрос. А зачем вам вообще потребовался флоат или дабл? Что такого вы делаете, что без них никак? Да еще и сохранять их нужно....
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: stm32 настройка и сохранение вещественных чисел float.
Код: Выделить всё
void WriteEEPROM(unsigned ee_adr, uint8_t *src, unsigned len);
int main()
{
float x;
WriteEEPROM(0,&x,sizeof(x));
}-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 настройка и сохранение вещественных чисел float.
Я правда функциями не пользуюсь.Функция -удобна.Но у меня не пошла.И как это инкремента для вещественного floatне может быть? а настройка кондиционеров ?
Re: stm32 настройка и сохранение вещественных чисел float.
Это неверно.ivan dimir писал(а):float десятые от целого числа.А double сотые или я ошибаюсь.Значит инкремент 0.1 минимум для float а для double 0.01
Код: Выделить всё
1/8бит = 0,00390625
1/16бит = 0,0000152587890625
1/32бит = 0,00000000023283064365386962890625
float - ? Вы с успехом можете инкрементировать хоть на 0,0000125.
Но проблема заключается в другом.
А как уже написали
ivan dimir, попробуйте инкрементировать на 0,0125 и через несколько инкрементов у вас вылезет ошибка. Которая с последующими инкрементами будет только накапливаться, что в конечном итоге приведет к неверному результату.КРАМ писал(а):Флоат имеет нелинейное разрешение и никакой "инкремент" к нему не применим по определению.
Re: stm32 настройка и сохранение вещественных чисел float.
дело не в ошибке.
у понятий инкремент и плав.точка абсолютно разный базис.
Вы же нигде не встречали рулетку не на металлической полосе, а на резиновой ленте.
разные свойства - разное применение.
у понятий инкремент и плав.точка абсолютно разный базис.
Вы же нигде не встречали рулетку не на металлической полосе, а на резиновой ленте.
разные свойства - разное применение.
Re: stm32 настройка и сохранение вещественных чисел float.
А почему бы тогда не сделать в целых числах, а запятую ставить вручную. Тоесть напимер 25,3° будет записываться целым числом 253 и его можно инкрементировать по 1 для 0,1° или по 10 для 1°. То есть нецелое число с десятыми или сотыми долями просто домножается на 10 или 100 и таким образом десятичная запятая уходит и не нужен никакой float - достаточно int16_t или int32t. Все расчеты будут в целочисленной математике, а при выводе на дисплей десятичную запятую можно поставить вручную, разделив число на две части - до и после запятой.
Автору нужно разобраться с темой представления чисел.
Автору нужно разобраться с темой представления чисел.
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: stm32 настройка и сохранение вещественных чисел float.
[uquote="Up2805",url="/forum/viewtopic.php?p=4241385#p4241385"]А почему бы тогда не сделать в целых числах, а запятую ставить вручную.[/uquote]
Вы только что изобрели fix point...
Только для этого не надо переходить на двоично-десятичное представление чисел. Хватит и просто двоичного. Так диапазон чисел будет заметно шире, а множитель станет степенью двойки, что заменит умножение/деление на арифметические сдвиги.
Вы только что изобрели fix point...
Только для этого не надо переходить на двоично-десятичное представление чисел. Хватит и просто двоичного. Так диапазон чисел будет заметно шире, а множитель станет степенью двойки, что заменит умножение/деление на арифметические сдвиги.
Re: stm32 настройка и сохранение вещественных чисел float.
Я просто не стал называть это слишком сложным словом и объяснил "на пальцах" как попроще
И я не говорил про BCD, я имел ввиду записать не float t = 25.3, а int16_t t = 253. А при выводе этого числа на дисплей вывести его как оно есть, а точку поставить вручную между разрядами.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 настройка и сохранение вещественных чисел float.
Как это вывод вручную.Ну число 253*1/10 я так понимаю?А потм вывод присвоить float(duoble)переменной это число и вывод этого числа на экран?
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: stm32 настройка и сохранение вещественных чисел float.
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4241365#p4241365"]а настройка кондиционеров ?[/uquote]
Вы путаете вывод на индикацию с математикой регулирования. Регулирование не требует никаких дробей, если конечно диапазон требуемых чисел не выходит за целочисленную разрядность. Но и тогда флоат употребляется при расчетах очень ограничено (например как тип у коэффициентов рекурсивных фильтров - IIR). При выводе не дисплей чисел с фиксированной десятичной разрядностью, место запятой определяется отдельно от целого числа.
Ну и нет никакой необходимости хранить в EEPROM запятые. Достаточно хранить приведенное к целому число (то есть сдвинутое до целого).
Вы путаете вывод на индикацию с математикой регулирования. Регулирование не требует никаких дробей, если конечно диапазон требуемых чисел не выходит за целочисленную разрядность. Но и тогда флоат употребляется при расчетах очень ограничено (например как тип у коэффициентов рекурсивных фильтров - IIR). При выводе не дисплей чисел с фиксированной десятичной разрядностью, место запятой определяется отдельно от целого числа.
Ну и нет никакой необходимости хранить в EEPROM запятые. Достаточно хранить приведенное к целому число (то есть сдвинутое до целого).
Re: stm32 настройка и сохранение вещественных чисел float.
В зависимости от того, какую функцию вы используете для вывода текста на дисплей и от того, какой дисплей применяете. Если обычный семисегментный 3-разрядный, то отобразите на нем число "253" и включите точку во втором разряде индикатора, чтобы получилось на дисплее "25.3"


