比如你想生成的PWM的時鐘信號頻率為10K,然后你就可以利用10K的PWM時鐘源計數(shù)生成周期為(1~4095)*(1/10000)的PWM波形了。
其實(shí)再次修改程序,你還可以計算PWM周期計數(shù)器與高電平相關(guān)的值。
目前提供Lua腳本的
function get(my)--這個是選擇系統(tǒng)的時鐘源,這里默認(rèn)選擇內(nèi)置的24M時鐘HIRC Fhirc=24000000--下面幾個變量都是臨時變量使用,初始化多少都行 CKDIV=0 Fsys=0 pre=1 Fpwm=0 i=0 for CKDIV=0,255 do for i=0,7 do pre=2^i if(CKDIV==0) then Fsys=Fhirc elseif((CKDIV>0)and(CKDIV<=0xFF)) then Fsys=Fhirc/(2*CKDIV) end Fpwm=Fsys/pre if(my==Fpwm) then print("pre="..pre.."CKDIV="..CKDIV) end end endend get(10000)?
發(fā)現(xiàn)有兩組參數(shù)可以滿足需求
pre=16.0CKDIV=75
pre=8.0CKDIV=150
CKDIV是這里,選擇內(nèi)部的RC振蕩器后的分頻
CKDIV = 75; PWM0_ClockSource(PWM_FSYS,16); 或者 CKDIV = 150; PWM0_ClockSource(PWM_FSYS,8);
function get(my)--這個是選擇系統(tǒng)的時鐘源,這里默認(rèn)選擇內(nèi)置的24M時鐘HIRC Fhirc=24000000--下面幾個變量都是臨時變量使用,初始化多少都行 CKDIV=0 Fsys=0 pre=1 Fpwm=0 i=0 for CKDIV=0,255 do for i=0,7 do pre=2^i if(CKDIV==0) then Fsys=Fhirc elseif((CKDIV>0)and(CKDIV<=0xFF)) then Fsys=Fhirc/(2*CKDIV) end Fpwm=Fsys/pre if(my==Fpwm) then print("PWM時鐘頻率為"..my.."Hz".." 需要設(shè)置".."pre="..pre..", CKDIV="..CKDIV) end end endend get(10000)print("-----------------------------------")get(15000)print("-----------------------------------")get(20000)? 優(yōu)化了一下顯示形式,輸出結(jié)果,可以看出為了達(dá)到某個結(jié)果,實(shí)際上可以通過多組分頻組合實(shí)現(xiàn)。??
PWM時鐘頻率為10000Hz 需要設(shè)置pre=16.0, CKDIV=75PWM時鐘頻率為10000Hz 需要設(shè)置pre=8.0, CKDIV=150-----------------------------------PWM時鐘頻率為15000Hz 需要設(shè)置pre=32.0, CKDIV=25PWM時鐘頻率為15000Hz 需要設(shè)置pre=16.0, CKDIV=50PWM時鐘頻率為15000Hz 需要設(shè)置pre=8.0, CKDIV=100PWM時鐘頻率為15000Hz 需要設(shè)置pre=4.0, CKDIV=200-----------------------------------PWM時鐘頻率為20000Hz 需要設(shè)置pre=8.0, CKDIV=75PWM時鐘頻率為20000Hz 需要設(shè)置pre=4.0, CKDIV=150 END 本文系21ic論壇藍(lán)V作者gaoyang9992006原創(chuàng)
原文標(biāo)題:高手雜談:用Lua編寫計算ML51單片機(jī)PWM時鐘源的程序
文章出處:【微信公眾號:嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
單片機(jī)
+關(guān)注
關(guān)注
6071文章
45265瀏覽量
660736 -
PWM
+關(guān)注
關(guān)注
116文章
5814瀏覽量
222803 -
Lua
+關(guān)注
關(guān)注
0文章
84瀏覽量
11247
原文標(biāo)題:高手雜談:用Lua編寫計算ML51單片機(jī)PWM時鐘源的程序
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
怎么測單片機(jī)系統(tǒng)頻率
單片機(jī)怎么燒程序
基于51單片機(jī)PWM直流電機(jī)調(diào)速程序 0到20級的調(diào)速
51單片機(jī)中為什么很少出現(xiàn)printf的身影

可調(diào)時測溫計算的多功能時鐘代碼及仿真
STM8S003F的作用是什么,如何編寫單片機(jī)程序去控制?
基于51單片機(jī)的手動數(shù)字時鐘

基于51單片機(jī)的遙控開關(guān)仿真(雙機(jī)通信)

基于51單片機(jī)的LED點(diǎn)陣滾動顯示系統(tǒng)

評論