最近在搞一個擇多算法,用于無刷電機的過零檢測,參考了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個位,用的是數組的方式,但這種方法在低轉速的時候,有時候會檢測到假的過零事件
先謝謝了
有什么其它關于無刷電機知識的,也可以相互探討一下
|