新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 使用內(nèi)部計時器中斷產(chǎn)生PWM調(diào)速

使用內(nèi)部計時器中斷產(chǎn)生PWM調(diào)速

作者: 時間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
當(dāng)計時器產(chǎn)生第二次中斷時,程序會第二次執(zhí)行中斷服務(wù)程序,同樣首先執(zhí)行判斷語句if(t==0){tmp1=m1;},由于這時t值已經(jīng)在第一次中斷并執(zhí)行中斷服務(wù)程序時被加“1”,也就是說t的值現(xiàn)在等于“1”,因此tmp1=m1語句不被執(zhí)行,tmp1的值仍然保持它原來的值“70”。接下來執(zhí)行判斷語句if(t=100) t=0;,這時t的值被加“1”后等于“2”,但條件t>=100仍然為假而t=0語句不被執(zhí)行,即t不被置“0”。。

由此我們也可以看出,時鐘產(chǎn)生第二次中斷并第二次執(zhí)行中斷服務(wù)程序后,各變量的變化是:
m1是給定值“70”自然不會變化;
tmp1的值也保持“70”不變;
en1的值仍然等于“1”;
t的值被加“1”等于“2”。

本文引用地址:http://butianyuan.cn/article/201611/319674.htm

同理,時鐘產(chǎn)生第70次中斷并執(zhí)行中斷服務(wù)程序時,判斷語句if(t==0){tmp1=m1;}仍然不被執(zhí)行,tmp1仍然保持“70”,判斷語句if(t=100) t=0;由于t的值此時為“70”而使條件t>=100仍然為假,語句t=0;不被執(zhí)行而使t值不被置“0”。

當(dāng)時鐘產(chǎn)生第71次中斷并執(zhí)行中斷服務(wù)程序時,判斷語句if(t==0){tmp1=m1;}仍然不被執(zhí)行,tmp1仍然保持“70”,判斷語句if(t=100) t=0;由于t>=100為假仍然不被執(zhí)行,而使t值不被置“0”。

同理,當(dāng)時鐘產(chǎn)生第99次中斷并執(zhí)行中斷服務(wù)程序時,en1仍然等于“0”,t的值被加到“99”,并且不被置“0”。

當(dāng)時鐘產(chǎn)生第100次中斷并執(zhí)行中斷服務(wù)程序時,en1仍然等于“0”,t的值被加到“100”,這時判斷語句if(t>=100) t=0;由于條件t>=100為真而使t被置“0”。
由于t被置“0”而使得從第101次中斷產(chǎn)生并執(zhí)行中斷服務(wù)程序時,程序又回到第一次中斷時的狀態(tài)。

至此,由于我們在語句if(t>=100) t=0;中用條件t>=100預(yù)設(shè)了PWM的周期為100次中斷,固在100次上述中斷完成后,即一個PWM周期完成,一個PWM周期完成后的階梯圖為:

en1=1,70個中斷時間
(從第一次中斷開始en1=1使電機(jī)得電轉(zhuǎn)動——————————————(到第71次中斷en1跳變?yōu)?ldquo;0”使電

70個中斷的時間) 機(jī)停轉(zhuǎn)30個中斷的時間)
——————
en1=0,30個中斷時間


由此可以看出,通過設(shè)定在單片機(jī)內(nèi)部時鐘產(chǎn)生中斷并執(zhí)行中斷服務(wù)程序,使電機(jī)在一個特定的時間段內(nèi),70%的時間電機(jī)被加電轉(zhuǎn)動,30%的時間電機(jī)不被加電而停止,從而使電機(jī)被減速到其全速的70%。

同理,如果我們給定m1的值為50,電機(jī)的速度將被減速到全速的50%。



評論


技術(shù)專區(qū)

關(guān)閉