ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
30 июня
1444964 Топик полностью
reZident (25.06.2024 14:11, просмотров: 53) ответил Anvar на Мне кажется вы не совсем поняли задачу, это не про числа, это про угловой энкодер. 1. Тогда как вычислять при переходе от 32767 к -32768? 2. Не понял. Все равно там будет "стык" соседних угловых положений отличающихся на один бит, а среднее будет в полшкалы энкодера. И да, некрасивое решение у меня есть.
Я конечно не программист, но согласен со SciFi о том, что нужно использовать знаковую арифметику. По-моему увеличение беззнакового числа 32767 на единицу в знаковой арифметике int16_t даст -1, а не -32768. А чтобы перейти через точку переполнения результата, нужно исходное число приводить в масштаб точно так же, как мы работаем с синусом или косинусом - вычитать из числа период до тех пор, пока оное число не станет меньше периода. P.S. количество вычитаний можно так же 

считать и интерпретировать как количество периодов-полных оборотов.