PIC單片機(jī)捕捉模塊的設(shè)計(jì)思路
掃描二維碼
隨時(shí)隨地手機(jī)看文章
pic16f877單片機(jī)配置了兩個(gè)ccp(捕捉/比較/脈寬調(diào)制)模塊,即ccp1和ccp2。它們各白都有獨(dú)立的16位寄存器ccpr1和ccpr2。兩個(gè)模塊的結(jié)構(gòu)、功能、操作方法基本一樣,區(qū)別僅在于它們各自有獨(dú)立的外部引腳和特殊事件觸發(fā)器。ccp模塊的功能包括外部信號(hào)捕捉、內(nèi)部比較輸出以及pwm輸出,它往往與定時(shí)器/計(jì)數(shù)器配合使用。
ccp模塊可工作在3種模式下:捕捉方式、比較方式和脈寬調(diào)制方式。
· 捕捉方式是指檢測(cè)引腳上輸入信號(hào)的狀態(tài),當(dāng)信號(hào)的狀態(tài)符合設(shè)定的條件時(shí)(信號(hào)上升沿或下降沿出現(xiàn)時(shí))產(chǎn)生中斷,并記錄當(dāng)時(shí)的定時(shí)器/計(jì)數(shù)器值,當(dāng)ccp模塊工作在捕捉方式時(shí),tmr1控制寄存器必須工作在定時(shí)器或同步計(jì)數(shù)方式下。
· 比較方式是指將事先設(shè)定好的值與定時(shí)器方式或同步計(jì)數(shù)方式下的值相互比較,當(dāng)兩個(gè)值相等時(shí),產(chǎn)生中斷并驅(qū)動(dòng)事先設(shè)定好的動(dòng)作。
· 脈寬調(diào)制功能適用于從引腳上輸出脈沖寬度隨時(shí)可調(diào)的pwm信號(hào),來(lái)實(shí)璣直流電機(jī)的調(diào)速、d/a轉(zhuǎn)換和步進(jìn)電機(jī)的步進(jìn)控制。
本設(shè)計(jì)應(yīng)用pic16f877單片機(jī)的ccp模塊的捕獲工作方式進(jìn)行頻率計(jì)的設(shè)計(jì),具體設(shè)計(jì)要求如下。
測(cè)量對(duì)象為100~1000hz的ttl電平信號(hào),待測(cè)量的參數(shù)有:
· 頻率,測(cè)量誤差小于0.1%;
· 周期,測(cè)量誤差小于0.1%;
· 脈沖寬度(高電平持續(xù)時(shí)間),脈沖寬度大于100μs,測(cè)量誤差小于1%;
· 占空比,占空比的變化范圍為10%~90%,測(cè)量誤差小于1%。
頻率計(jì)的設(shè)計(jì)原理如下。
在t1時(shí)刻之前把ccp1設(shè)置為捕捉脈沖上升沿。當(dāng)信號(hào)上升沿到來(lái)時(shí),產(chǎn)生ccp中斷,在中斷服務(wù)程序中捕捉該時(shí)刻tmr1寄存器中16位的值time1,將ccp1設(shè)置為捕捉脈沖的下降沿。
當(dāng)該信號(hào)下降沿到來(lái)時(shí),產(chǎn)生cpp中斷,在中斷服務(wù)程序中捕捉該時(shí)刻tmr1寄存器中16位的值time2,而后再把ccp1設(shè)置為捕捉脈沖的上升沿。
當(dāng)信號(hào)的下一個(gè)上升沿來(lái)到時(shí),又產(chǎn)生ccp中斷,在中斷服務(wù)程序中捕捉此刻tmr1寄存器中的16位的值time3,則信號(hào)的周期t=(time3-time1)μs,信號(hào)頻率f=1/t,脈沖寬度p=(time2-time1)μs,占空比d=p/t×100%。
考慮到ccp捕捉方式可能發(fā)生的最大誤差為±1μs,為滿足誤差要求,可把上述過(guò)程多進(jìn)行幾次,將各次測(cè)試的平均值作為最后的測(cè)量值。 圖 頻率計(jì)設(shè)計(jì)原理示意圖 如果需要測(cè)量的最高頻率為1000hz,周期只有1000μs,且占空比的變化范圍為10%~90%,則高低電平持續(xù)的最短時(shí)間都為100μs,可以有充分的時(shí)間執(zhí)行中斷服務(wù)程序。
如果實(shí)際應(yīng)用中發(fā)現(xiàn)兩次捕捉中斷的時(shí)間間隔小于1次中斷服務(wù)時(shí)間,則可以通過(guò)適當(dāng)設(shè)置寄存器ccpicon的值,使ccp模塊每4個(gè)脈沖上升沿捕捉1次或每16個(gè)脈沖上升沿捕捉一次,這樣兩次中斷的時(shí)間間隔就增大了。如果還不能達(dá)到要求,則可用分頻器對(duì)輸入頻率信號(hào)分頻處理后,再由ccp1引腳輸入。 歡迎轉(zhuǎn)載,信息來(lái)源維庫(kù)電子市場(chǎng)網(wǎng)()