Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Пятница
22 ноября
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
Средства и методы разработки
1069687
Топик полностью
maleon
(18.01.2021 11:37, просмотров: 399)
ответил
FDA
на
Возникла проблема с 32-битной арифметикой. Компилятор XC8 для PIC18. Контроллер подключён к импульсному выходу электросчётчика. Количество импульсов на киловатт-час задаётся программно. Допустим это 3200 имп/кВт*ч. Счётчик 32-битный. Требуется выдавать "наружу" уже пересчитанное значение с точностью до Вт*ч. И тут появляется проблема. Я не могу сделать так: (cnt * 1000) / coeff, потому что при достижении значения в 4 млн. с чем-то импульсов у меня при умножении будет
div_t x = div(cnt, coeff); return x.quot * 1000 + x.rem * 1000 / coeff;
Прошу прощения, если кто-то уже аналогичное предложил, а я не заметил
Ответить
Как-то так с округлением (без плавучки)
maleon
(223 знак., 19.01.2021 18:27
)