PIC單片機捕捉模塊的設計思路
CCP模塊可工作在3種模式下:捕捉方式、比較方式和脈寬調制方式。
· 捕捉方式是指檢測引腳上輸入信號的狀態(tài),當信號的狀態(tài)符合設定的條件時(shí)(信號上升沿或下降沿出現時(shí))產(chǎn)生中斷,并記錄當時(shí)的定時(shí)器/計數器值,當CCP模塊工作在捕捉方式時(shí),TMR1控制寄存器必須工作在定時(shí)器或同步計數方式下。
· 比較方式是指將事先設定好的值與定時(shí)器方式或同步計數方式下的值相互比較,當兩個(gè)值相等時(shí),產(chǎn)生中斷并驅動(dòng)事先設定好的動(dòng)作。
· 脈寬調制功能適用于從引腳上輸出脈沖寬度隨時(shí)可調的PWM信號,來(lái)實(shí)璣直流電機的調速、D/A轉換和步進(jìn)電機的步進(jìn)控制。
本設計應用PIC16F877單片機的CCP模塊的捕獲工作方式進(jìn)行頻率計的設計,具體設計要求如下。
測量對象為100~1000Hz的TTL電平信號,待測量的參數有:
· 頻率,測量誤差小于0.1%;
· 周期,測量誤差小于0.1%;
· 脈沖寬度(高電平持續時(shí)間),脈沖寬度大于100μs,測量誤差小于1%;
· 占空比,占空比的變化范圍為10%~90%,測量誤差小于1%。
頻率計的設計原理如下。
在t1時(shí)刻之前把CCP1設置為捕捉脈沖上升沿。當信號上升沿到來(lái)時(shí),產(chǎn)生CCP中斷,在中斷服務(wù)程序中捕捉該時(shí)刻TMR1寄存器中16位的值time1,將CCP1設置為捕捉脈沖的下降沿。
當該信號下降沿到來(lái)時(shí),產(chǎn)生CPP中斷,在中斷服務(wù)程序中捕捉該時(shí)刻TMR1寄存器中16位的值time2,而后再把CCP1設置為捕捉脈沖的上升沿。
當信號的下一個(gè)上升沿來(lái)到時(shí),又產(chǎn)生CCP中斷,在中斷服務(wù)程序中捕捉此刻TMR1寄存器中的16位的值time3,則信號的周期T=(time3-time1)μS,信號頻率f=1/T,脈沖寬度P=(time2-time1)μS,占空比D=P/T×100%。
考慮到CCP捕捉方式可能發(fā)生的最大誤差為±1μs,為滿(mǎn)足誤差要求,可把上述過(guò)程多進(jìn)行幾次,將各次測試的平均值作為最后的測量值。
圖 頻率計設計原理示意圖
如果需要測量的最高頻率為1000Hz,周期只有1000μs,且占空比的變化范圍為10%~90%,則高低電平持續的最短時(shí)間都為100μs,可以有充分的時(shí)間執行中斷服務(wù)程序。
如果實(shí)際應用中發(fā)現兩次捕捉中斷的時(shí)間間隔小于1次中斷服務(wù)時(shí)間,則可以通過(guò)適當設置寄存器CCPICON的值,使CCP模塊每4個(gè)脈沖上升沿捕捉1次或每16個(gè)脈沖上升沿捕捉一次,這樣兩次中斷的時(shí)間間隔就增大了。如果還不能達到要求,則可用分頻器對輸入頻率信號分頻處理后,再由CCP1引腳輸入。
評論