|
最近在搞一個(gè)擇多算法,用于無刷電機(jī)的過零檢測(cè),參考了PIC的代碼,原理大概是這樣的
每10uS讀取一次過零端口的狀態(tài),然后把端口的電平保存,并左移一位,然后再進(jìn)行比較,檢測(cè)這個(gè)數(shù)里面1的位是多少,用來檢測(cè)當(dāng)前端口的電平,實(shí)際上就是一個(gè)濾波
if(IO) a |=0x01;
a <= 1;
a是個(gè)8位數(shù),這樣一來,在讀取8次之后, a 就是一個(gè)完整的8次的IO狀態(tài)了
我就想知道,有沒有什么高效的算法,能快速的檢測(cè) a 里面"1"有多少個(gè),或者是說,快速判斷 a 里面"1"的個(gè)數(shù)超過6個(gè)
這個(gè)又不能用比大小,因?yàn)榭赡軙?huì)出現(xiàn)這種情況: 0111 1111 或者是 1111 1110,或者其它的組合
這兩種情況都是超過了6個(gè)"1"的
PIC的方法是只比較3個(gè)位,用的是數(shù)組的方式,但這種方法在低轉(zhuǎn)速的時(shí)候,有時(shí)候會(huì)檢測(cè)到假的過零事件
先謝謝了
有什么其它關(guān)于無刷電機(jī)知識(shí)的,也可以相互探討一下
|
|