新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機捕捉模塊的設計思路

        PIC單片機捕捉模塊的設計思路

        作者: 時間:2013-03-15 來源:網絡 收藏
        單片機配置了兩個CCP(捕捉/比較/脈寬調制)模塊,即CCP1和CCP2。它們各白都有獨立的16位寄存器CCPR1和CCPR2。兩個模塊的結構、功能、操作方法基本一樣,區別僅在于它們各自有獨立的外部引腳和特殊事件觸發器。CCP模塊的功能包括外部信號捕捉、內部比較輸出以及PWM輸出,它往往與定時器/計數器配合使用。

          CCP模塊可工作在3種模式下:捕捉方式、比較方式和脈寬調制方式。

          · 捕捉方式是指檢測引腳上輸入信號的狀態,當信號的狀態符合設定的條件時(信號上升沿或下降沿出現時)產生中斷,并記錄當時的定時器/計數器值,當CCP模塊工作在捕捉方式時,TMR1控制寄存器必須工作在定時器或同步計數方式下。

          · 比較方式是指將事先設定好的值與定時器方式或同步計數方式下的值相互比較,當兩個值相等時,產生中斷并驅動事先設定好的動作。

          · 脈寬調制功能適用于從引腳上輸出脈沖寬度隨時可調的PWM信號,來實璣直流電機的調速、D/A轉換和步進電機的步進控制。

          本設計應用單片機的CCP模塊的捕獲工作方式進行頻率計的設計,具體設計要求如下。

          測量對象為100~1000Hz的TTL電平信號,待測量的參數有:

          · 頻率,測量誤差小于0.1%;

          · 周期,測量誤差小于0.1%;

          · 脈沖寬度(高電平持續時間),脈沖寬度大于100μs,測量誤差小于1%;

          · 占空比,占空比的變化范圍為10%~90%,測量誤差小于1%。

          頻率計的設計原理如下。

          在t1時刻之前把CCP1設置為捕捉脈沖上升沿。當信號上升沿到來時,產生CCP中斷,在中斷服務程序中捕捉該時刻TMR1寄存器中16位的值time1,將CCP1設置為捕捉脈沖的下降沿。

          當該信號下降沿到來時,產生CPP中斷,在中斷服務程序中捕捉該時刻TMR1寄存器中16位的值time2,而后再把CCP1設置為捕捉脈沖的上升沿。

          當信號的下一個上升沿來到時,又產生CCP中斷,在中斷服務程序中捕捉此刻TMR1寄存器中的16位的值time3,則信號的周期T=(time3-time1)μS,信號頻率f=1/T,脈沖寬度P=(time2-time1)μS,占空比D=P/T×100%。

          考慮到CCP捕捉方式可能發生的最大誤差為±1μs,為滿足誤差要求,可把上述過程多進行幾次,將各次測試的平均值作為最后的測量值。

          圖 頻率計設計原理示意圖

          如果需要測量的最高頻率為1000Hz,周期只有1000μs,且占空比的變化范圍為10%~90%,則高低電平持續的最短時間都為100μs,可以有充分的時間執行中斷服務程序。

          如果實際應用中發現兩次捕捉中斷的時間間隔小于1次中斷服務時間,則可以通過適當設置寄存器CCPICON的值,使CCP模塊每4個脈沖上升沿捕捉1次或每16個脈沖上升沿捕捉一次,這樣兩次中斷的時間間隔就增大了。如果還不能達到要求,則可用分頻器對輸入頻率信號分頻處理后,再由CCP1引腳輸入。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 武邑县| 怀安县| 赤城县| 大安市| 青阳县| 天峨县| 威信县| 贵州省| 化州市| 怀集县| 濉溪县| 扬州市| 麻栗坡县| 托克逊县| 易门县| 安庆市| 东丽区| 泗水县| 定襄县| 那曲县| 全南县| 晋宁县| 开化县| 清新县| 达尔| 安达市| 南康市| 仁布县| 祁连县| 阜阳市| 象山县| 江津市| 博白县| 锦屏县| 恭城| 柳江县| 炎陵县| 玉环县| 武义县| 本溪| 永昌县|