ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
1316342 Топик полностью
reZident (04.06.2023 17:14, просмотров: 92) ответил Costic на Как я понимаю речь про SiLabs C8051F120 или что-то 100 серии (твой любимый, не помню). Плавающая точка _очень_ медленная. За время пока вычисляется выражение может набежать переполнение счётчика. Прерывание/счётчик остановлены? t16 объявлена volatile? Обязательно ли умножать на 0.12, может быть разделить на 8 (*0.125) достаточно и сделать это сдвигом (t16 >> 3)? У меня в F380 нет регистра PCA0_T, вместо него PCA0L и PCA0H, которые надо читать в нужной
+1. Я ни разу не программист, хотя приходилось этим заниматься. Я бы заменил операцию с float на операцию с uint32, тем более, что исходное число uint16. Переводим t16 в формат какой-нибудь t32 и вместо умножения float на 0,12 делаем целочисленное умножение на 7864(=0.12*65536) и сдвиг на 16 вправо (/65536).