最近在搞一个择多算法,用于无刷电机的过零检测,参考了PIC的代码,原理大概是这样的
每10uS读取一次过零端口的状态,然后把端口的电平保存,并左移一位,然后再进行比较,检测这个数里面1的位是多少,用来检测当前端口的电平,实际上就是一个滤波
if(IO) a |=0x01;
a <= 1;
a是个8位数,这样一来,在读取8次之后, a 就是一个完整的8次的IO状态了
我就想知道,有没有什么高效的算法,能快速的检测 a 里面"1"有多少个,或者是说,快速判断 a 里面"1"的个数超过6个
这个又不能用比大小,因为可能会出现这种情况: 0111 1111 或者是 1111 1110,或者其它的组合
这两种情况都是超过了6个"1"的
PIC的方法是只比较3个位,用的是数组的方式,但这种方法在低转速的时候,有时候会检测到假的过零事件
先谢谢了
有什么其它关于无刷电机知识的,也可以相互探讨一下
|