Я хочу рассчитать напряжение, используя AD C периферийное устройство PIC18F14K50. Результат находится в диапазоне от 0 до 1023 (10 бит). Поэтому я использовал этот простой расчет:
uint16_t voltage = ADC_Result * 5000 / 1023;
Однако результаты неверны. Я предполагаю, что произошло переполнение арифметики c. Я пробовал множество комбинаций скобок, меняя порядок элементов и т. Д. c.
Лучший результат был 4088, когда ADC_Result
было 1023, используя приведенный ниже код; что действительно далеко от 5000.
uint16_t voltage = ADC_Result * (5000 / 1023);
Что мне делать, чтобы получить лучшие результаты в приведенном выше расчете? Пожалуйста, не предлагайте числа с плавающей запятой, так как они вызывают сбой в MCU! Они используют много ресурсов без какой-либо реальной выгоды.