![]() |
發布時間: 2022-12-15 10:40
正文摘要:請教下 我用PWM控制電機速度改變頻率可以實現 ,現在想按下開始按鍵后PWM運行,然后按下關閉按鍵 PWM停止工作 CR = 0,然后按下另一個鍵for循發送50個脈沖控制電機角度 ,現在是CR = 0后,電機不轉 但是 ... |
STC頭文件引用就可以了,測過有效 #define PWM0_NORMAL() PCA_PWM0 &= ~3 //PWM0正常輸出(默認) #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正常輸出(默認) #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正常輸出(默認) #define PWM2_OUT_0() PCA_PWM2 |= 3 //PWM2一直輸出0 #define PWM2_OUT_1() PCA_PWM2 &= ~3, CCAP2H = 0; //PWM2一直輸出1 |
控制CR只是啟/停PCA定時器,并不能確定輸出口的電平狀態。以前做過一個項目用到PWM開停,寫CCAP0H=0xff;用占空比0%不理想,輸出端還有零星脈沖。后來改用AUXR1特殊功能寄存器把輸出腳切換到空閑腳,輸出端回復到普通IO口,初始設置低電平的方法解決的。有沒有更好的方法就沒有繼續探索。 |
STC的PWM關閉并不是使端口輸出低電平,只是關閉了PWM的時鐘而已,端口在你關閉PWM那一刻是什么電平,之后就一直是這個電平 以下是STC8G的關閉,并使端口低電平 CR=0; // CCAPM1=0x00; // CCAP1H=0xff; //PWM保持低電平 PCA_PWM1=0x02; // |
wufa1986 發表于 2022-12-15 14:38 STC的單片的PWM是可以連續輸出0或1的。 |
很多單片機PWM置0還是有1/256的脈沖 |
示波器看一下就知道了。 |