ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
30 июня
1445063 Топик полностью
ЫЫyкпy (26.06.2024 05:37, просмотров: 73) ответил Anvar на Нужна подсказка, скользящее среднее для углового энкодера. Не раз делал, но забыл. Как красиво обработать переход через "0"? Например для трех, есть три последовательных значения 65535,0,1 - и среднее должно получится 0.
Энкодер, как я понимаю, выдает 16-разрядные числа и на один оборот приходится 64К дискретов. В таком случае 16-разрядный процессор - то что надо. Фокус в том, что представление целых чисел только пытается имитировать математические целые, но из-за ограниченной разрядности множество целых от +бесконечности до -бесконечности оказывается обрезанным до [0, 2N-1], да ещё и закольцованным потому что следом за 2N-1 (0xffff) следует 0. Это как раз то что 

нужно в

данном случае - вычисления по модулю 2N.

"Кто нам мешает, тот нам и поможет"(с). Если разрядность энкодера совпадает с разрядностью АЛУ то ничего делать не надо, аппаратура сама делает то что надо. Если разрядность энкодера кратна степени 2, тоже всё просто - арифметика по модулю 2k это просто оставлять k младших разрядов, игнорируя заёмы и переполнения.

Взирая на нынешнее состояние отечества моего с таковым оком, каковое может иметь человек, воспитанный по строгим древним правилам, ... не могу я не дивиться, в сколь краткое время повредились повсюдно нравы в России. (с) кн. М.М. Щербатов.