Датчик положения ротора (ДПР). У себя используем не холлы, а оптические датчики, проблемы похожие и у них. Спрашиваю не просто так - поболтать, меня интересует именно работа с неисправными элементами, а то возможности покрутить на столе у меня редко бывает, а когда привод на объекте там не до этого обычно. Пробывал табличный метод оценки (по сути то о чём вы и говорили), но до ума довести не успел.
Код
// status_dpr_old - строка,status_dpr - столбец
static int16 table_status[8][8] ={
{ I0, I0, I0, I0, I0, I0, I0, I1 },
{ I0, S, E, P, E, N, E, I1 },
{ I0, E, S, N, E, E, P, I1 },
{ I0, N, P, S, E, E, E, I1 },
{ I0, E, E, E, S, P, N, I1 },
{ I0, P, E, E, N, S, E, I1 },
{ I0, E, N, E, P, E, S, I1 },
{ I0, I1, I1, I1, I1, I1, I1, I1 }
Получается всё равно попадаю на одинаковое сочетание в какой то момент (I0, I1), вводить доп. условия по предыдущим состояниям к этому "бутерброду" как-то громоздко кажется. Вот и спрашивал алгоритм может готовый есть.