標(biāo)題:
PIC16F877的Timer2與CCP模塊的PWM
[打印本頁(yè)]
作者:
51黑黑黑
時(shí)間:
2016-2-13 01:44
標(biāo)題:
PIC16F877的Timer2與CCP模塊的PWM
Timer2是一個(gè)8位定時(shí)器,帶有一個(gè)預(yù)分頻器、一個(gè)后分頻器和一個(gè)周期寄存器。當(dāng)將預(yù)分頻器和后分頻器設(shè)置為最大值時(shí),其溢出時(shí)間與16位定時(shí)器的相同。在PWM模式下使用 CCP模塊時(shí), Timer2 為PWM時(shí)基。
下圖顯示了Timer2的結(jié)構(gòu)框圖。后分頻器對(duì)TMR2寄存器和PR2寄存器的匹配次數(shù)進(jìn)行計(jì)數(shù)。這樣有助于減少中斷服務(wù)程序的調(diào)用頻率,優(yōu)化CPU性能。
與Timer2有關(guān)的寄存器
PWM模式
在脈沖寬度調(diào)制(PWM)模式下,CCPx引腳可輸出分辨率高達(dá)10位的 PWM輸出。因?yàn)镃CPx引腳與端口數(shù)據(jù)鎖存器是復(fù)用的,所以相應(yīng)的TRIS位必須清零以使CCPx引腳為輸出狀態(tài),下圖為PWM結(jié)構(gòu)簡(jiǎn)圖。
一個(gè)PWM輸出包含一個(gè)時(shí)基(周期)和一段輸出高電平的時(shí)間(占空比)。PWM的頻率是周期的倒數(shù)(1/周期)。
PWM周期
可通過(guò)寫(xiě)入PR2 寄存器來(lái)規(guī)定,可用以下公式計(jì)算:
PWM 周期 = [(PR2) + 1] ? 4 ? TOSC ? (TMR2 預(yù)分頻比),用時(shí)間單位表示
PWM 頻率 (FPWM)定義為1/[PWM周期]。
當(dāng)TMR2 等于PR2 時(shí),在下一遞增計(jì)數(shù)周期中將產(chǎn)生下面三個(gè)事件:
? TMR2 被清零
? CCPx 引腳被置1( 例外情況:如果PWM占空比 =0%, CCPx 不被置1)
? PWM 占空比從CCPRxL 被鎖定為 CCPRxH
PWM占空比
可通過(guò)寫(xiě)入CCPRxL寄存器和DCxB1:DCxB0(CCPxCON<5:4>)位來(lái)規(guī)定。最高分辨率可達(dá)10位:由CCPRxL中的高8位和CCPxCON<5:4>中的低2位組成。這一10位值由DCxB9:DCxB0來(lái)表征。計(jì)算PWM 占空比的公式如下:
PWM 占空比 = (DCxB9:DCxB0 ) ? Tosc ? (TMR2 預(yù)分頻比),用時(shí)間單位表示
DCxB9:DCxB0的值可以在任何時(shí)候?qū)懭耄钡絇R2與TMR2中的值相符(當(dāng)前周期結(jié)束)時(shí),占空比的值才被鎖存到CCPRxH。在PWM模式下,CCPRxH是只讀寄存器。CCPRxH寄存器和一個(gè)2位的內(nèi)部鎖存器用于為PWM占空比提供雙重緩沖。雙重緩沖對(duì)PWM的無(wú)毛刺操作是極其重要的。當(dāng)CCPRxH和2位鎖存器的值與TMR2和內(nèi)部2位Q時(shí)鐘(或TMR2分頻器的2位)串接值相符時(shí),CCPx引腳被清零。此時(shí)占空比結(jié)束。對(duì)于給定的PWM頻率,其最大分辨率(位)為:
計(jì)算舉例:
通過(guò)以下步驟將CCP模塊配置為PWM模式:
1. 寫(xiě)入PR2寄存器以設(shè)定PWM周期。
2. 寫(xiě)入DCxB9:DCxB0位以設(shè)置PWM占空比。
3. 將相應(yīng)的TRIS位清零以將CCPx引腳設(shè)為輸出。
4. 寫(xiě)入T2CON以設(shè)置TMR2預(yù)分頻比并使能 Timer2。
5. 將CCP模塊配置為PWM模式。
作者:
999看
時(shí)間:
2016-6-2 10:05
謝謝樓主分享經(jīng)驗(yàn)
作者:
can518104
時(shí)間:
2016-6-2 16:31
夠詳細(xì),研究一下
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1