找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1831|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

如何用一個定時器產(chǎn)生兩個相位相差百分之五十的百分之二十占空比的pwm波

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:819526 發(fā)表于 2023-11-21 08:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
如何用一個單片機(jī)定時器產(chǎn)生兩個相位相差百分之五十的百分之二十占空比的pwm波,pwm頻率時2.5k不能使用定時器中斷因為使用的單片機(jī)資源有限,頻繁進(jìn)入中斷會打亂其他程序執(zhí)行,所以我想問一下如何使用一個定時器完成這個內(nèi)容。單片機(jī)型號CPS32K21
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:819526 發(fā)表于 2023-11-21 14:09 | 只看該作者
找到方法了,中央對齊模式,然后設(shè)置兩個通道輸出極性相反通過設(shè)置互補的占空比來形成180°相位差。
回復(fù)

使用道具 舉報

板凳
ID:123289 發(fā)表于 2023-11-21 15:47 | 只看該作者
設(shè):
1、定時器中斷時間為:T,即每經(jīng)過時間T中斷一次。
2、2NT為PWM的周期。
3、兩個PWM分別從P1.0、P1.1輸出。

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

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

如此,選擇不同的TH值,可得到不同的占空比,而兩個輸出的相差保持50%。注意:必須保證TH < TW。
回復(fù)

使用道具 舉報

地板
ID:819526 發(fā)表于 2023-11-21 16:52 | 只看該作者
yzwzfyz 發(fā)表于 2023-11-21 15:47
設(shè):
1、定時器中斷時間為:T,即每經(jīng)過時間T中斷一次。
2、2NT為PWM的周期。

我就是不想頻繁進(jìn)入中所以才有的這個問題,現(xiàn)在已經(jīng)解決了,采取的是相反極性加中間對齊的pwm解決的,以為相位正好差一半所以剛剛好滿足要求
回復(fù)

使用道具 舉報

5#
ID:275826 發(fā)表于 2023-11-23 17:33 | 只看該作者
不用中斷,用查詢方法能精確嗎?
回復(fù)

使用道具 舉報

6#
ID:491577 發(fā)表于 2023-11-25 00:49 | 只看該作者
樓主神人呀,定時器不用中斷可以兩個做出20%PWM,牛
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表