Например TDA7294

Форум РадиоКот • Просмотр темы - Проблема в вычислении AVR Studio
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 13, 2025 17:58:17

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Проблема в вычислении AVR Studio
СообщениеДобавлено: Чт ноя 11, 2021 14:15:05 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт авг 13, 2013 12:13:07
Сообщений: 47
Рейтинг сообщения: 0
Приветствую.
Помогите разобраться
Код:
char bufer[32];
uint32_t y=(10000*buf.dig5);
sprintf(bufer,"%lu",y);

далее вывожу на lcd.
buf.dig5, эта цифра должна стоять пятой, (buf.dig2 второй, buf.dig3 третьей) какая бы там цифра не была, то при умножении на 10000 у меня получается чёрт знает что. При компиляции вылазит предупреждение ../transmit.c:19:18: warning: integer overflow in expression - целочисленное переполнение в выражении. Почему-то такая фигня вылазит только при умножении на 10000, подставлял и 100к и 1кк и 100, всё норм, вместо buf.dig5 подставляю напрямую цифру 10000*4, и тоже самое. Куда копать? Или как можно buf.dig установить в нужное положение без умножения?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема в вычислении AVR Studio
СообщениеДобавлено: Чт ноя 11, 2021 14:27:11 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 0
Компилятор любит все к int приводить и если он 16-ти битный, как на AVR, то и результат будет соответствующий, а потом ты его уже uint32_t переменной присваиваешь.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема в вычислении AVR Studio
СообщениеДобавлено: Чт ноя 11, 2021 14:47:30 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт авг 13, 2013 12:13:07
Сообщений: 47
Рейтинг сообщения: 0
Сделал преобразование типов к uint32_t, так работает. Но вопрос остаётся открытым, почему умножая например на 10 000 000 результат правильный. С float y= тоже работает правильно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема в вычислении AVR Studio
СообщениеДобавлено: Чт ноя 11, 2021 15:01:22 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 0
10'000'000 в 16 бит не влазит и тип уже будет long, а не int.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Проблема в вычислении AVR Studio
СообщениеДобавлено: Чт ноя 11, 2021 15:18:25 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт авг 13, 2013 12:13:07
Сообщений: 47
Рейтинг сообщения: 0
Я понял. Компилятор приводит к минимальному типу данных множители, и не учитывает что результат может не влезть в этот тип.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Проблема в вычислении AVR Studio
СообщениеДобавлено: Чт ноя 11, 2021 15:22:09 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Как выше уже сказали, у avr-gcc тип 16-разрядный по умолчанию. Сам частенько баги ловил из-за этого.
Просто когда прыгаешь по кругу AVR - STM32 - PC, то с непривычки появляются такие вот опечатки.

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y