找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

怎么用定時器做相差180 PWM

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:734017 發(fā)表于 2024-8-18 16:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

0-1000
通道1:小于5輸出高.否則輸出低  ?
通道2:=1000/2+5?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:344848 發(fā)表于 2024-8-19 21:40 | 只看該作者
ST公司有這樣MCU,N年前我使用過ST公司STM8S系列單片機開發(fā)無刷三相直流電機的控制器,這一系列芯片的高級定時器采用互補輸出模式;ARM核STM32系列單片機的高級定時器同樣采用互補輸出模式,它提供路數(shù)比STM8S系列單片機多?筛鶕(jù)實際需要選擇。
回復(fù)

使用道具 舉報

板凳
ID:344848 發(fā)表于 2024-8-19 21:44 | 只看該作者
目前使用ARM核的32位單片機的高級定時器都具備互補輸出模式,如三星、NXP公司等等。
回復(fù)

使用道具 舉報

地板
ID:401564 發(fā)表于 2024-8-20 13:12 | 只看該作者
你這只是相位差,并不是互補,可以試一下這個方案:
定義兩個全局變量:
u16 flash_crc = 0;
u16 flash_cnt = 1000;

在定時器中斷中加入flash_crc = (flash_crc + 1) % flash_cnt;
在主函數(shù)中或者定時器中斷中檢測,并輸出電平
        if(flash_crc >= (flash_cnt/ 2))
        {
                高電平;
        }       
        else
        {
                低電平;
        }


這個是產(chǎn)生50%占空比的
根據(jù) flash_crc  的值,可以輸出不同長度的脈沖


回復(fù)

使用道具 舉報

5#
ID:1130718 發(fā)表于 2024-8-20 13:31 | 只看該作者
首先先確定時基,假如是1000,讓定時器執(zhí)行累加操作,當寄存器內(nèi)的數(shù)據(jù)達到了500的時候,讓電平進行反轉(zhuǎn),這樣就會輸出一個占空比為50
回復(fù)

使用道具 舉報

6#
ID:1034262 發(fā)表于 2024-8-20 15:13 | 只看該作者
STC8A8K64D4、STC8G2K64S4這些型號非常方便的輸出多路帶相位差的15位PWM,直接指定輸出高低電平的時刻即可。
回復(fù)

使用道具 舉報

7#
ID:734017 發(fā)表于 2024-8-21 00:41 | 只看該作者
Y_G_G 發(fā)表于 2024-8-20 13:12
你這只是相位差,并不是互補,可以試一下這個方案:
定義兩個全局變量:
u16 flash_crc = 0;

u16 flash_crc = 0;
u16 flash_cnt = 1000;
void TM0_Isr() interrupt 1

   flash_crc = (flash_crc + 1) % flash_cnt;
  if(flash_crc <=5)
        {
                P1=0x01;
        }      
else if (flash_crc >= (flash_cnt/ 2) &&  flash_crc <= (flash_cnt/ 2)+5)
        
        {
                P1=0x02;
        }

else  P1=0x00;


屎山代碼,
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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