找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

請教用大循環(huán)發(fā)送PWM,慢一點(diǎn)原因

查看數(shù): 2475 | 評論數(shù): 9 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時(shí)間: 2022-2-28 10:11

正文摘要:

本帖最后由 happy2058 于 2022-2-28 10:16 編輯 請教一下,下面寫法,大循環(huán)跑不動原因    用定時(shí)器反轉(zhuǎn)一個(gè)標(biāo)志位,大循環(huán)判斷發(fā)送。8H1K08   24M     開了串口1串口2 ...

回復(fù)

ID:401564 發(fā)表于 2022-2-28 22:35
happy2058 發(fā)表于 2022-2-28 22:08
A板就輸出兩路PWM 2K的 占空比10%可調(diào),用一個(gè)定時(shí)器,盡量不要過多的操作,后期方便移值,因?yàn)楹笃谝粋(gè) ...

2KHZ的%10就是50uS,那就是說最壞的情況就是兩次中斷的間隔是50uS,整體就是每500uS進(jìn)入定時(shí)器中斷兩次,如果定時(shí)器中斷做的事情太多了,主函數(shù)就會慢下來了
進(jìn)入定時(shí)器中斷盡可能的不要處理太多東西,但凡是能在主函數(shù)處理的,就不要在中斷中處理
定時(shí)器優(yōu)先等級設(shè)定為最高,這樣就保證PWM占空比的穩(wěn)定
串口的波特率要盡量的設(shè)定低一點(diǎn),這樣就不會丟數(shù)據(jù)
個(gè)人感覺,如果量不大的話,就換成STC8G1K08的,這個(gè)有片上PWM,能省事很多,價(jià)格也就高了那么一兩毛的而已
ID:734017 發(fā)表于 2022-2-28 22:08
Y_G_G 發(fā)表于 2022-2-28 20:43
如果不是商業(yè)機(jī)密,就把完整的代碼上傳
如果是不方便,你至少是要說明,現(xiàn)在要做什么,一共要做幾個(gè)任務(wù),或 ...

A板就輸出兩路PWM 2K的 占空比10%可調(diào),用一個(gè)定時(shí)器,盡量不要過多的操作,后期方便移值,因?yàn)楹笃谝粋(gè)定時(shí)器要干幾個(gè)功能。
ID:401564 發(fā)表于 2022-2-28 20:43
happy2058 發(fā)表于 2022-2-28 20:21
謝謝這位大哥,這個(gè)你之前已經(jīng)教過我了,再次感謝,F(xiàn)在是一個(gè)定時(shí)器處理多個(gè)任務(wù)。

如果不是商業(yè)機(jī)密,就把完整的代碼上傳
如果是不方便,你至少是要說明,現(xiàn)在要做什么,一共要做幾個(gè)任務(wù),或者是要給個(gè)電路圖看一下是怎么一回事
不然的話,大多的網(wǎng)友其實(shí)是不知道你要做什么的
ID:734017 發(fā)表于 2022-2-28 20:21
Y_G_G 發(fā)表于 2022-2-28 19:09
1,你要設(shè)定要好各個(gè)中斷的優(yōu)先等級,100uS的定時(shí)器中斷時(shí)間是很短的,你要根據(jù)你自己的實(shí)際要求來設(shè)定好優(yōu)先 ...

謝謝這位大哥,這個(gè)你之前已經(jīng)教過我了,再次感謝。現(xiàn)在是一個(gè)定時(shí)器處理多個(gè)任務(wù)。
ID:401564 發(fā)表于 2022-2-28 19:09
1,你要設(shè)定要好各個(gè)中斷的優(yōu)先等級,100uS的定時(shí)器中斷時(shí)間是很短的,你要根據(jù)你自己的實(shí)際要求來設(shè)定好優(yōu)先等級,默認(rèn)的等級都是一樣的,但查詢是有先后順序的,當(dāng)定時(shí)器進(jìn)入中斷之后,串口中斷就被阻斷了
2,更改PWM占空比在主函數(shù)更改,定時(shí)器只作一個(gè)加載的,調(diào)節(jié)會慢一點(diǎn),但不會有太大影響的,給個(gè)代碼參考一下

void timer1_pwm()interrupt 3                        //利用t1定時(shí)器產(chǎn)生PWM波形
{       
        TF1 = 0;                                                        //清除TF1標(biāo)志
                        if(HI)
                        {
                                TH1=pwm_l_H; //低電平時(shí)間
                                TL1=pwm_l_L; //
                                HI=0;
                                PWM=0;
                        }
                           else
                        {
                                TH1=pwm_h_H;                 //高電平時(shí)間
                                TL1=pwm_h_L;                 //
                                HI=1;
                                PWM=1;
                        }
        TR1 = 1;                        //定時(shí)器1開始計(jì)時(shí)                                                                
}
在主函數(shù)調(diào)節(jié)pwm_l_H和pwm_l_L這兩個(gè)全局變量就可以了
ID:8222 發(fā)表于 2022-2-28 16:47
為什么不是發(fā)送控制參數(shù),讓從機(jī)按參數(shù)要求產(chǎn)生PWM?
ID:734017 發(fā)表于 2022-2-28 16:26
yzwzfyz 發(fā)表于 2022-2-28 14:32
提示:
1、PWM的基礎(chǔ)時(shí)鐘取自何處?(假設(shè)來自于事件A。)
2、A事件在其它中斷發(fā)生時(shí),會不會受到影響?( ...

是啊,我試了好久,發(fā)現(xiàn)不能這寫設(shè)到T0最高級  TO做100us標(biāo)志位反轉(zhuǎn),時(shí)間基準(zhǔn)
事件A 在while(1)判斷標(biāo)志位,自加,反轉(zhuǎn)輸出,反轉(zhuǎn)標(biāo)志位,為下一次TO中斷判斷。

輸出不一至的原因,可能是事件A 在while(1)順序,他不是中斷后馬上判斷,造成延遲了。
ID:123289 發(fā)表于 2022-2-28 14:32
提示:
1、PWM的基礎(chǔ)時(shí)鐘取自何處?(假設(shè)來自于事件A。)
2、A事件在其它中斷發(fā)生時(shí),會不會受到影響?(其它中斷更高級,會打斷A。

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

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

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