一種基于定時(shí)器的pwm波生成方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明提供一種基于定時(shí)器的PWM波生成方法,它涉及一種基于定時(shí)器的脈寬長(zhǎng)度調(diào)制信號(hào)PWM波的生成方法,提出了一種利用定時(shí)器來(lái)實(shí)現(xiàn)PWM波的生成的方法。這種基于定時(shí)器的PWM波的生成方法,可以推廣到各種類(lèi)型的定時(shí)器中實(shí)現(xiàn)PWM信號(hào)的生成,適用于多種工業(yè)控制領(lǐng)域。在本發(fā)明中以CDT2000板卡為范例進(jìn)行實(shí)例講解,所生成的PWM波是用來(lái)控制舵機(jī)動(dòng)作的14ms周期PWM波,脈寬長(zhǎng)度范圍1.1?1.9ms。
【背景技術(shù)】
[0002]PWM波(PWM,即Pulse Width Modulat1n,脈沖寬度調(diào)制)是一種技術(shù)成熟的工業(yè)控制信號(hào),廣泛應(yīng)用于電機(jī)轉(zhuǎn)速控制、作動(dòng)器行程控制等工業(yè)控制方面,是利用數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。
[0003]PWM波的波形圖見(jiàn)圖1,t。為脈沖周期,t 1、t2為表征PWM波有效信息的脈寬長(zhǎng)度。本發(fā)明所述的PWM波來(lái)源于舵機(jī)作動(dòng)控制的需求,需要生成一種周期14ms,脈寬長(zhǎng)度的范圍1.1?1.9ms的脈寬長(zhǎng)度調(diào)制信號(hào)。
[0004]進(jìn)行PWM波的生成,就是利用某些設(shè)備產(chǎn)生這種固定周期、脈寬長(zhǎng)度可以進(jìn)行人工設(shè)定的脈寬長(zhǎng)度調(diào)制信號(hào)。
[0005]傳統(tǒng)的PWM波生成方法,采用片內(nèi)自帶的系統(tǒng)時(shí)鐘、通過(guò)I/O設(shè)備按照一定的時(shí)鐘長(zhǎng)度交替輸出高電平和低電平,這種方法容易受到系統(tǒng)內(nèi)其它軟件對(duì)系統(tǒng)資源占用率的影響,會(huì)導(dǎo)致PWM波周期或者有效脈寬長(zhǎng)度不穩(wěn)定。
[0006]本發(fā)明中所用的PWM波生成方式,采用中斷服務(wù)函數(shù)進(jìn)行匹配,對(duì)PWM波的周期準(zhǔn)確性可以嚴(yán)格控制,并且可以很容易的生成各種不同周期的PWM波,具有很強(qiáng)的通用性和可操作性。
【發(fā)明內(nèi)容】
[0007]〈1>發(fā)明目的
[0008]本發(fā)明目的在于設(shè)計(jì)一種基于定時(shí)器的PWM波生成方法,以定時(shí)器為主要硬件設(shè)備,通過(guò)一定的物理連接和中斷服務(wù)函數(shù)的編碼,實(shí)現(xiàn)可適用于各種不同周期和脈寬的PWM波的生成。
[0009]<2>技術(shù)方案
[0010]本發(fā)明一種基于定時(shí)器的PWM波生成方法,其步驟如下:
[0011]步驟一:設(shè)置一個(gè)定時(shí)器為循環(huán)計(jì)數(shù)工作模式,每周期觸發(fā)一個(gè)時(shí)鐘中斷、輸出一次負(fù)脈沖,循環(huán)計(jì)數(shù)定時(shí)器的輸出端與PWM波生成定時(shí)器的輸入端相連接;
[0012]步驟二:設(shè)置用于PWM波生成的定時(shí)器為高電平觸發(fā)減數(shù)計(jì)數(shù)、上升沿觸發(fā)計(jì)數(shù)重載、計(jì)數(shù)值非零時(shí)輸出低電平、計(jì)數(shù)值減為零后輸出高電平的工作模式,PWM波生成定時(shí)器的輸出端即可生成PWM波;
[0013]步驟三:編寫(xiě)中斷服務(wù)函數(shù),在每個(gè)循環(huán)計(jì)數(shù)結(jié)束后響應(yīng)時(shí)鐘中斷。
[0014]其中,步驟一中所述的“循環(huán)計(jì)數(shù)工作模式”,是定時(shí)器的一種可進(jìn)行設(shè)置的工作模式,給定一個(gè)設(shè)定值,它會(huì)從這個(gè)值自減到零,然后再次回到這個(gè)值繼續(xù)自減,周而復(fù)始,循環(huán)計(jì)數(shù)周期=設(shè)定值/定時(shí)器時(shí)鐘頻率。循環(huán)計(jì)數(shù)周期必須整除PWM波周期且大于脈寬長(zhǎng)度的最大值,這樣才能保證PWM波周期的準(zhǔn)確性、保證PWM波脈寬的每個(gè)可能值都可以被生成。
[0015]其中,步驟二中所述的“高電平觸發(fā)減數(shù)計(jì)數(shù)、上升沿觸發(fā)計(jì)數(shù)重載、計(jì)數(shù)值非零時(shí)輸出低電平、計(jì)數(shù)值減為零后輸出高電平的工作模式”,是定時(shí)器的另一種可設(shè)置的工作模式,其功能是:在每個(gè)循環(huán)計(jì)數(shù)周期結(jié)束時(shí),PWM波生成定時(shí)器的輸入端都會(huì)接收到來(lái)自循環(huán)計(jì)數(shù)定時(shí)器輸出端的負(fù)脈沖使得計(jì)數(shù)值發(fā)生重載,而持續(xù)的高電平又使得減數(shù)計(jì)數(shù)繼續(xù)工作。
[0016]其中,步驟三中所述的“中斷服務(wù)函數(shù)”,是在每個(gè)循環(huán)計(jì)數(shù)周期結(jié)束時(shí)觸發(fā)中斷所調(diào)用的一個(gè)函數(shù),其功能是:在函數(shù)內(nèi)部進(jìn)行循環(huán)計(jì)數(shù),內(nèi)部循環(huán)計(jì)數(shù)周期正好是PWM波周期與循環(huán)計(jì)數(shù)定時(shí)器周期的商值,每個(gè)內(nèi)部循環(huán)的第一個(gè)周期將PWM波生成的定時(shí)器的計(jì)數(shù)值改寫(xiě)為(循環(huán)計(jì)數(shù)定時(shí)器周期一要生成的PWM波脈寬長(zhǎng)度)/定時(shí)器時(shí)鐘頻率,這樣在該周期內(nèi)定時(shí)器必然會(huì)計(jì)數(shù)結(jié)束,從而產(chǎn)生與脈寬長(zhǎng)度等時(shí)間的高電平,在內(nèi)部循環(huán)的接下來(lái)的幾個(gè)周期內(nèi)不做其它處理。
[0017]用定時(shí)器生成PWM波的時(shí)序圖見(jiàn)圖2所示。
[0018]〈3>優(yōu)點(diǎn)功效
[0019]基于定時(shí)器的PWM波生成方法,由于定時(shí)器在寫(xiě)入初值之后的下一次中斷內(nèi)載入,因此即使循環(huán)計(jì)數(shù)定時(shí)器的中斷響應(yīng)有延時(shí)也不會(huì)影響生成的PWM波的脈寬和周期準(zhǔn)確性。
【附圖說(shuō)明】
[0020]下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說(shuō)明。
[0021]圖1是一種PWM波的波形示意圖;
[0022]圖2是用定時(shí)器生成PWM波的時(shí)序圖,備注中有相關(guān)變量的解釋說(shuō)明;
[0023]圖3是應(yīng)用實(shí)例中利用⑶T2000的定時(shí)器功能實(shí)現(xiàn)PWM波生成的電路和信號(hào)連接圖;
[0024]圖4是應(yīng)用實(shí)例中利用⑶T2000的定時(shí)器功能進(jìn)行PWM波生成的時(shí)序圖;
[0025]圖5本發(fā)明所述方法流程框圖
[0026]具體實(shí)施步驟
[0027]如圖1-5所示,本發(fā)明一種基于定時(shí)器的PWM波生成方法,見(jiàn)圖5所示,其步驟如下:
[0028]步驟一:設(shè)置一個(gè)定時(shí)器為循環(huán)計(jì)數(shù)工作模式,每周期觸發(fā)一個(gè)時(shí)鐘中斷、輸出一次負(fù)脈沖,循環(huán)計(jì)數(shù)定時(shí)器的輸出端與PWM波生成定時(shí)器的輸入端相連接;循環(huán)計(jì)數(shù)周期必須被PWM波周期整除且大于脈寬長(zhǎng)度的最大值。
[0029]步驟二:設(shè)置用于PWM波生成的定時(shí)器為高電平觸發(fā)減數(shù)計(jì)數(shù)、上升沿觸發(fā)計(jì)數(shù)重載、計(jì)數(shù)時(shí)間內(nèi)輸出低電平、計(jì)數(shù)結(jié)束后輸出高電平的工作模式,PWM波生成定時(shí)器的輸出端即可生成PWM波。
[0030]步驟三:編寫(xiě)中斷服務(wù)函數(shù),在每個(gè)循環(huán)計(jì)數(shù)結(jié)束后響應(yīng)時(shí)鐘中斷,中斷服務(wù)函數(shù)進(jìn)行內(nèi)部循環(huán)計(jì)數(shù),計(jì)數(shù)周期正好是PWM波周期與循環(huán)計(jì)數(shù)定時(shí)器周期的商值,每個(gè)循環(huán)第一個(gè)周期將PWM波生成的定時(shí)器的計(jì)數(shù)值改寫(xiě)為(循環(huán)計(jì)數(shù)定時(shí)器周期一要生成的PWM波脈寬長(zhǎng)度)/定時(shí)器時(shí)鐘頻率、這樣在這周期內(nèi)定時(shí)器必然會(huì)計(jì)數(shù)結(jié)束產(chǎn)生與脈寬長(zhǎng)度等時(shí)間的高電平,在每個(gè)循環(huán)接下來(lái)幾個(gè)周期內(nèi)不做任何處理。
[0031]應(yīng)用實(shí)例
[0032]下面講解的示例來(lái)自于實(shí)際的應(yīng)用案例,以CDT2000板卡為定時(shí)器設(shè)備,以PC/104嵌入式計(jì)算機(jī)實(shí)現(xiàn)中斷服務(wù)函數(shù)的響應(yīng)。在這個(gè)案例中,需要生成5路PWM波。生成的5路PWM波信號(hào)用于驅(qū)動(dòng)舵機(jī)執(zhí)行器產(chǎn)生動(dòng)作。
[0033]需要生成的PWM波是一種周期14ms,脈寬長(zhǎng)度范圍1.1?1.9ms的脈寬長(zhǎng)度調(diào)制信號(hào)。
[0034]具體做法如下:
[0035]1、定時(shí)器工作模式設(shè)置
[0036]⑶T2000板卡的四個(gè)82C54定時(shí)控制器,每個(gè)具有三個(gè)獨(dú)立定時(shí)器,總共獲得了 12個(gè)獨(dú)立的定時(shí)器,進(jìn)行PWM波的生成只用到了其中六個(gè)定時(shí)器,如圖3所示。各定時(shí)器的連接和工作方式的設(shè)置表述如下:
[0037]定時(shí)器1-0:以2ms為周期循環(huán)計(jì)數(shù),并產(chǎn)生中斷,OUT 口在每一計(jì)數(shù)周期產(chǎn)生負(fù)脈沖。
[0038]定時(shí)器1-1?定時(shí)器2-2:GATE 口上升沿輸入使定時(shí)器重載,OUT 口在計(jì)數(shù)時(shí)為低,計(jì)數(shù)結(jié)束后為高。
[0039]其中,定時(shí)器1-0個(gè)作為中斷服務(wù)函數(shù)的觸發(fā)定時(shí)器,設(shè)置工作周期為2ms,即每周期初始計(jì)數(shù)值設(shè)定為16000。
[0040]2、中斷服務(wù)函數(shù)功能描述
[0041]中斷服務(wù)函數(shù)中關(guān)于PWM波生成的原理表述如下(PWM波采集的時(shí)序圖見(jiàn)圖4):
[0042]I)要生成周期為14ms的PWM波需要經(jīng)歷7個(gè)中斷周期;
[0043]2)第I個(gè)周期,向PWM生成定時(shí)器載入Tl = (2ms - t0)/(8X106)的計(jì)數(shù)值,t0為期望得到的PWM波脈寬,那么在第一個(gè)2ms內(nèi),PWM生成定時(shí)器會(huì)在(2ms-t0)計(jì)數(shù)結(jié)束后在OUT 口產(chǎn)生to長(zhǎng)度的脈沖;
[0044]3)接下來(lái)的連續(xù)6個(gè)周期,PWM生成定時(shí)器重新載入最大值(65535),定時(shí)器的OUT 口輸出低電平,之后6個(gè)2ms周期均保持低電平。
【主權(quán)項(xiàng)】
1.一種基于定時(shí)器的PWM波生成方法,其特征在于:其步驟如下: 步驟一:設(shè)置一個(gè)定時(shí)器為循環(huán)計(jì)數(shù)工作模式,每周期觸發(fā)一個(gè)時(shí)鐘中斷、輸出一次負(fù)脈沖,循環(huán)計(jì)數(shù)定時(shí)器的輸出端與PWM波生成定時(shí)器的輸入端相連接; 步驟二:設(shè)置用于PWM波生成的定時(shí)器為高電平觸發(fā)減數(shù)計(jì)數(shù)、上升沿觸發(fā)計(jì)數(shù)重載、計(jì)數(shù)值非零時(shí)輸出低電平、計(jì)數(shù)值減為零后輸出高電平的工作模式,PWM波生成定時(shí)器的輸出端即能生成PWM波; 步驟三:編寫(xiě)中斷服務(wù)函數(shù),在每個(gè)循環(huán)計(jì)數(shù)結(jié)束后響應(yīng)時(shí)鐘中斷。
2.根據(jù)權(quán)利要求1所述的一種基于定時(shí)器的PWM波生成方法,其特征在于:在步驟一中所述的“循環(huán)計(jì)數(shù)工作模式”,是定時(shí)器的一種能進(jìn)行設(shè)置的工作模式,給定一個(gè)設(shè)定值,它會(huì)從這個(gè)值自減到零,然后再次回到這個(gè)值繼續(xù)自減,周而復(fù)始,循環(huán)計(jì)數(shù)周期=設(shè)定值/定時(shí)器時(shí)鐘頻率;循環(huán)計(jì)數(shù)周期必須整除PWM波周期且大于脈寬長(zhǎng)度的最大值,這樣才能保證PWM波周期的準(zhǔn)確性、保證PWM波脈寬的每個(gè)可能值都能夠被生成。
3.根據(jù)權(quán)利要求1所述的一種基于定時(shí)器的PWM波生成方法,其特征在于:在步驟二中所述的“高電平觸發(fā)減數(shù)計(jì)數(shù)、上升沿觸發(fā)計(jì)數(shù)重載、計(jì)數(shù)值非零時(shí)輸出低電平、計(jì)數(shù)值減為零后輸出高電平的工作模式”,是定時(shí)器的另一種能設(shè)置的工作模式,其功能是:在每個(gè)循環(huán)計(jì)數(shù)周期結(jié)束時(shí),PWM波生成定時(shí)器的輸入端都會(huì)接收到來(lái)自循環(huán)計(jì)數(shù)定時(shí)器輸出端的負(fù)脈沖使得計(jì)數(shù)值發(fā)生重載,而持續(xù)的高電平又使得減數(shù)計(jì)數(shù)繼續(xù)工作。
4.根據(jù)權(quán)利要求1所述的一種基于定時(shí)器的PWM波生成方法,其特征在于:在步驟三中所述的“中斷服務(wù)函數(shù)”,是在每個(gè)循環(huán)計(jì)數(shù)周期結(jié)束時(shí)觸發(fā)中斷所調(diào)用的一個(gè)函數(shù),其功能是:在函數(shù)內(nèi)部進(jìn)行循環(huán)計(jì)數(shù),內(nèi)部循環(huán)計(jì)數(shù)周期正好是PWM波周期與循環(huán)計(jì)數(shù)定時(shí)器周期的商值,每個(gè)內(nèi)部循環(huán)的第一個(gè)周期將PWM波生成的定時(shí)器的計(jì)數(shù)值改寫(xiě)為(循環(huán)計(jì)數(shù)定時(shí)器周期一要生成的PWM波脈寬長(zhǎng)度)/定時(shí)器時(shí)鐘頻率,這樣在該周期內(nèi)定時(shí)器必然會(huì)計(jì)數(shù)結(jié)束,從而產(chǎn)生與脈寬長(zhǎng)度等時(shí)間的高電平,在內(nèi)部循環(huán)的接下來(lái)的幾個(gè)周期內(nèi)不做其它處理。
【專(zhuān)利摘要】本發(fā)明為一種基于定時(shí)器的PWM波生成方法,其步驟如下:一:設(shè)置一個(gè)定時(shí)器為循環(huán)計(jì)數(shù)工作模式,每周期觸發(fā)一個(gè)時(shí)鐘中斷、輸出一次負(fù)脈沖,循環(huán)計(jì)數(shù)定時(shí)器的輸出端與PWM波生成定時(shí)器的輸入端相連接;二:設(shè)置用于PWM波生成的定時(shí)器為高電平觸發(fā)減數(shù)計(jì)數(shù)、上升沿觸發(fā)計(jì)數(shù)重載、計(jì)數(shù)值非零時(shí)輸出低電平、計(jì)數(shù)值減為零后輸出高電平的工作模式,PWM波生成定時(shí)器的輸出端即能生成PWM波;三:編寫(xiě)中斷服務(wù)函數(shù),在每個(gè)循環(huán)計(jì)數(shù)結(jié)束后響應(yīng)時(shí)鐘中斷。本發(fā)明基于定時(shí)器的PWM波生成方法,由于定時(shí)器在寫(xiě)入初值之后的下一次中斷內(nèi)載入,因此即使循環(huán)計(jì)數(shù)定時(shí)器的中斷響應(yīng)有延時(shí)也不會(huì)影響生成的PWM波的脈寬和周期準(zhǔn)確性。
【IPC分類(lèi)】H03K7-08
【公開(kāi)號(hào)】CN104702251
【申請(qǐng)?zhí)枴緾N201510089189
【發(fā)明人】周堯明, 蒙志君, 王凱鵬, 趙文龍
【申請(qǐng)人】北京航空航天大學(xué)
【公開(kāi)日】2015年6月10日
【申請(qǐng)日】2015年2月27日