標(biāo)題: 關(guān)于STC單片機(jī)PWM關(guān)閉 [打印本頁]

作者: 864800116    時間: 2022-12-15 10:40
標(biāo)題: 關(guān)于STC單片機(jī)PWM關(guān)閉
請教下 我用PWM控制電機(jī)速度改變頻率可以實(shí)現(xiàn) ,現(xiàn)在想按下開始按鍵后PWM運(yùn)行,然后按下關(guān)閉按鍵 PWM停止工作  CR = 0,然后按下另一個鍵for循發(fā)送50個脈沖控制電機(jī)角度 ,現(xiàn)在是CR = 0后,電機(jī)不轉(zhuǎn) 但是有電流 這是為什么 是因?yàn)镻WM沒關(guān)閉嗎還是因?yàn)镻WM后 IO口還是PWM輸出口 沒有改成通用IO口

1671071468632.png (66.76 KB, 下載次數(shù): 50)

1671071468632.png

1671071501033.png (23.08 KB, 下載次數(shù): 53)

1671071501033.png

作者: coody_sz    時間: 2022-12-15 12:18
示波器看一下就知道了。
作者: wufa1986    時間: 2022-12-15 14:38
很多單片機(jī)PWM置0還是有1/256的脈沖
作者: coody_sz    時間: 2022-12-15 15:28
wufa1986 發(fā)表于 2022-12-15 14:38
很多單片機(jī)PWM置0還是有1/256的脈沖

STC的單片的PWM是可以連續(xù)輸出0或1的。
作者: Y_G_G    時間: 2022-12-15 16:24
STC的PWM關(guān)閉并不是使端口輸出低電平,只是關(guān)閉了PWM的時鐘而已,端口在你關(guān)閉PWM那一刻是什么電平,之后就一直是這個電平
以下是STC8G的關(guān)閉,并使端口低電平
        CR=0;                                        //
        CCAPM1=0x00;                        //
        CCAP1H=0xff;                        //PWM保持低電平
        PCA_PWM1=0x02;                        //
作者: wulin    時間: 2022-12-15 17:22
控制CR只是啟/停PCA定時器,并不能確定輸出口的電平狀態(tài)。以前做過一個項(xiàng)目用到PWM開停,寫CCAP0H=0xff;用占空比0%不理想,輸出端還有零星脈沖。后來改用AUXR1特殊功能寄存器把輸出腳切換到空閑腳,輸出端回復(fù)到普通IO口,初始設(shè)置低電平的方法解決的。有沒有更好的方法就沒有繼續(xù)探索。

作者: 張?zhí)鞄?nbsp;   時間: 2022-12-15 21:18
STC頭文件引用就可以了,測過有效
#define                PWM0_NORMAL()        PCA_PWM0 &= ~3                                //PWM0正常輸出(默認(rèn))
#define                PWM0_OUT_0()        PCA_PWM0 |=  3                                //PWM0一直輸出0
#define                PWM0_OUT_1()        PCA_PWM0 &= ~3, CCAP0H = 0;        //PWM0一直輸出1

#define                PWM1_NORMAL()        PCA_PWM1 &= ~3                                //PWM1正常輸出(默認(rèn))
#define                PWM1_OUT_0()        PCA_PWM1 |=  3                                //PWM1一直輸出0
#define                PWM1_OUT_1()        PCA_PWM1 &= ~3, CCAP1H = 0;        //PWM1一直輸出1

#define                PWM2_NORMAL()        PCA_PWM2 &= ~3                                //PWM2正常輸出(默認(rèn))
#define                PWM2_OUT_0()        PCA_PWM2 |=  3                                //PWM2一直輸出0
#define                PWM2_OUT_1()        PCA_PWM2 &= ~3, CCAP2H = 0;        //PWM2一直輸出1




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