熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2022-12-15 10:40
正文摘要:請(qǐng)教下 我用PWM控制電機(jī)速度改變頻率可以實(shí)現(xiàn) ,現(xiàn)在想按下開(kāi)始按鍵后PWM運(yùn)行,然后按下關(guān)閉按鍵 PWM停止工作 CR = 0,然后按下另一個(gè)鍵for循發(fā)送50個(gè)脈沖控制電機(jī)角度 ,現(xiàn)在是CR = 0后,電機(jī)不轉(zhuǎn) 但是 ... |
STC頭文件引用就可以了,測(cè)過(guò)有效 #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 |
控制CR只是啟/停PCA定時(shí)器,并不能確定輸出口的電平狀態(tài)。以前做過(guò)一個(gè)項(xiàng)目用到PWM開(kāi)停,寫(xiě)CCAP0H=0xff;用占空比0%不理想,輸出端還有零星脈沖。后來(lái)改用AUXR1特殊功能寄存器把輸出腳切換到空閑腳,輸出端回復(fù)到普通IO口,初始設(shè)置低電平的方法解決的。有沒(méi)有更好的方法就沒(méi)有繼續(xù)探索。 |
STC的PWM關(guān)閉并不是使端口輸出低電平,只是關(guān)閉了PWM的時(shí)鐘而已,端口在你關(guān)閉PWM那一刻是什么電平,之后就一直是這個(gè)電平 以下是STC8G的關(guān)閉,并使端口低電平 CR=0; // CCAPM1=0x00; // CCAP1H=0xff; //PWM保持低電平 PCA_PWM1=0x02; // |
wufa1986 發(fā)表于 2022-12-15 14:38 STC的單片的PWM是可以連續(xù)輸出0或1的。 |
很多單片機(jī)PWM置0還是有1/256的脈沖 |
示波器看一下就知道了。 |
Powered by 單片機(jī)教程網(wǎng)