欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

怎么用定時器做相差180 PWM

查看數: 1282 | 評論數: 6 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2024-8-18 16:02

正文摘要:

0-1000 通道1:小于5輸出高.否則輸出低  ? 通道2:=1000/2+5?

回復

ID:734017 發表于 2024-8-21 00:41
Y_G_G 發表于 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;


屎山代碼,
ID:1034262 發表于 2024-8-20 15:13
STC8A8K64D4、STC8G2K64S4這些型號非常方便的輸出多路帶相位差的15位PWM,直接指定輸出高低電平的時刻即可。
ID:1130718 發表于 2024-8-20 13:31
首先先確定時基,假如是1000,讓定時器執行累加操作,當寄存器內的數據達到了500的時候,讓電平進行反轉,這樣就會輸出一個占空比為50
ID:401564 發表于 2024-8-20 13:12
你這只是相位差,并不是互補,可以試一下這個方案:
定義兩個全局變量:
u16 flash_crc = 0;
u16 flash_cnt = 1000;

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


這個是產生50%占空比的
根據 flash_crc  的值,可以輸出不同長度的脈沖


ID:344848 發表于 2024-8-19 21:44
目前使用ARM核的32位單片機的高級定時器都具備互補輸出模式,如三星、NXP公司等等。
ID:344848 發表于 2024-8-19 21:40
ST公司有這樣MCU,N年前我使用過ST公司STM8S系列單片機開發無刷三相直流電機的控制器,這一系列芯片的高級定時器采用互補輸出模式;ARM核STM32系列單片機的高級定時器同樣采用互補輸出模式,它提供路數比STM8S系列單片機多。可根據實際需要選擇。

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表