Microchip PIC18F4550 微控制器芯片都有兩個 CCP(捕捉/ 比較/PWM)模組。 每個模組包含一個 16 位元寄存器,它可以用作 16 位捕捉寄存器、16 位比較寄存器或 PWM 主/從佔空比寄存器。在 PIC18F4550 引腳器件中,CCP1 為增強型 CCP 模組,該模組具有標準捕捉和比較模式以及增強型 PWM 模式 (Enhanced PWM)。
▲ PWM 框架圖 |
▲ PWM輸出 |
▲CCPxCON寄存器 |
可以通過寫 PR2 寄存器來指定PWM的週期。 可以使用如下公式計算 PWM 的週期:
▼公式:
PWM 頻率定義為1 / [PWM 週期]。當TMR2 等於PR2 時,在下一個計數週期中會發生以下三個事件:• TMR2 被清零• CCPx 引腳被置1 (例外情況:如果PWM 佔空比= 0%,則CCPx 引腳不被置1)• PWM 佔空比由CCPRxL 鎖存至CCPRxH
PWM 佔空比 (Duty Cycle):通過寫入CCPRxL 寄存器和CCPxCON<5:4> 位指定PWM的佔空比。 最高解析度可達10 位。 CCPRxL 包含佔空比的高8 位, CCPxCON<5:4> 包含其低2 位。 由CCPRxL:CCPxCON<5:4> 表示這個10 位值。 計算PWM 佔空比的公式如下:
▼公式:
可在任何時刻寫入CCPRxL 和CCPxCON<5:4>,但直至PR2 與TMR2 發生匹配時(即週期結束)時,才會將佔空比的值鎖存到CCPRxH 中。 在PWM 模式下,CCPRxH 為唯讀寄存器。
PWM 解析度 (Resolution):CCPRxH 寄存器和一個2 位的內部鎖存器用於為PWM佔空比提供雙重緩衝。 這種雙重緩衝對於避免PWM 工作過程中的毛刺非常重要。當CCPRxH 和2 位鎖存器的值與TMR2 (連有內部Q時鐘或 TMR2 預分頻器的2 位)匹配時,CCPx 引腳被清零。對於給定的PWM 頻率,其最大解析度(位)由以下的公式計算:
▼公式:
▼例:假設振盪頻率 20MHz,PWM頻率78.125 kHz,TM2 預分頻值 1:1,Resolution 8。
PWM 頻率和解析度 ( Fosc = 20MHz) :
PWM週期 = [ PR2+1] × 4 × Tosc × TM2預分頻值
PR2 = ((20MHz/78.125kHz) /4/16)-1
PR2 = (256) /4/16)-1
PR2 = 63 (0x3F)
假設佔空比 25%
PWM 佔空比 = CCPxCON<5:4> × Tosc × TM2預分頻值
CCPR1L= 256 × 0.25 = 64 = 0x40 = 0b01000000
CCP1CON<5:4> = 0b00
設置PWM 操作:
在為CCP 模組配置PWM 工作模式時應該遵循以下步驟:
•通過寫PR2 寄存器設置PWM 週期。
•通過寫CCPRxL 寄存器和CCPxCON<5:4> 位設置PWM 占空比。
•通過清零相應的TRIS 位元將CCPx 引腳配置為輸出引腳。
•通過寫T2CON 來設置TMR2 預分頻值並使能Timer2。
•配置CCPx 模組使之工作於PWM 模式。
2011 年 04 月 05 日 天氣報告
氣溫:18.2 度 @ 23:00
相對濕度:百分之76%
天氣:多雲
感謝教學,這樣比英文spec的好懂多了
回覆刪除