標(biāo)題: 如何用一個(gè)定時(shí)器產(chǎn)生兩個(gè)相位相差百分之五十的百分之二十占空比的pwm波 [打印本頁]

作者: TTL.    時(shí)間: 2023-11-21 08:56
標(biāo)題: 如何用一個(gè)定時(shí)器產(chǎn)生兩個(gè)相位相差百分之五十的百分之二十占空比的pwm波
如何用一個(gè)單片機(jī)定時(shí)器產(chǎn)生兩個(gè)相位相差百分之五十的百分之二十占空比的pwm波,pwm頻率時(shí)2.5k不能使用定時(shí)器中斷因?yàn)槭褂玫膯纹瑱C(jī)資源有限,頻繁進(jìn)入中斷會(huì)打亂其他程序執(zhí)行,所以我想問一下如何使用一個(gè)定時(shí)器完成這個(gè)內(nèi)容。單片機(jī)型號CPS32K21

作者: TTL.    時(shí)間: 2023-11-21 14:09
找到方法了,中央對齊模式,然后設(shè)置兩個(gè)通道輸出極性相反通過設(shè)置互補(bǔ)的占空比來形成180°相位差。
作者: yzwzfyz    時(shí)間: 2023-11-21 15:47
設(shè):
1、定時(shí)器中斷時(shí)間為:T,即每經(jīng)過時(shí)間T中斷一次。
2、2NT為PWM的周期。
3、兩個(gè)PWM分別從P1.0、P1.1輸出。

方案:定義三個(gè)變量
1、變量1:TW,用于計(jì)數(shù)PWM周期(初始=0,計(jì)數(shù)值 0-2N)。
2、變量2:TH,用于計(jì)數(shù)脈部寬度(輸出=1的時(shí)間)。
3、變量3:TH2,用于計(jì)數(shù)P1.1的脈沖寬度(=1的時(shí)間)。
  
中斷服務(wù)程序這樣寫:
1、【PWM的周期】:每次中斷 TW + 1 ,當(dāng)TW = 2N 時(shí),讓TW = 0,重新計(jì)數(shù),這樣就完成PWM周期計(jì)數(shù)。
2、動(dòng)作判定:
   【第一路P1.0】
   當(dāng)TW = 0 時(shí),讓 P1.0 = 1,PWM輸出1;
   當(dāng)TW = TH 時(shí),讓P1.0 = 0,PWM輸出0,這樣第一路P1.0輸出1的寬度就是TH。
   
   【第二路P1.1】
   當(dāng)TW = N 時(shí),讓 P1.1 = 1,這樣,P1.1以50%的相差輸出PWM=1;要點(diǎn):同時(shí)讓TH2 = TH,開始計(jì)時(shí)P1.1輸出1的時(shí)間。(退出程序,跳過3、)            
   當(dāng)TW <> N 時(shí),執(zhí)行以下3、。

3、【P1.1 = 1的時(shí)間】
    如果TH2 = 0,什么也不做,保持現(xiàn)狀(此時(shí)P1.1必定輸出0)。     
    如果TH2 <> 0,則 TH2 -1(P1.1 = 1計(jì)時(shí),此時(shí)P1.1必定輸出1), 當(dāng)TH2 = 0 時(shí)(減成0時(shí),1應(yīng)該結(jié)束了),讓P1.1 = 0,這樣第二路輸出1的寬度就也是TH。

如此,選擇不同的TH值,可得到不同的占空比,而兩個(gè)輸出的相差保持50%。注意:必須保證TH < TW。
作者: TTL.    時(shí)間: 2023-11-21 16:52
yzwzfyz 發(fā)表于 2023-11-21 15:47
設(shè):
1、定時(shí)器中斷時(shí)間為:T,即每經(jīng)過時(shí)間T中斷一次。
2、2NT為PWM的周期。

我就是不想頻繁進(jìn)入中所以才有的這個(gè)問題,現(xiàn)在已經(jīng)解決了,采取的是相反極性加中間對齊的pwm解決的,以為相位正好差一半所以剛剛好滿足要求
作者: tyrl800    時(shí)間: 2023-11-23 17:33
不用中斷,用查詢方法能精確嗎?
作者: hhh402    時(shí)間: 2023-11-25 00:49
樓主神人呀,定時(shí)器不用中斷可以兩個(gè)做出20%PWM,牛




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1