2012-02-16 48 views
2

這應該是一個簡單的公式,但我無法弄清楚。PWM的工作頻率

我有一個16mHZ的AVR芯片。

我需要運行一個PWM信號是爲24KHz ..

什麼是決定什麼是最好的預分頻器的公式。

我正在使用16位計時器。

回答

5

閱讀數據表(這裏例如從ATMEGA328P數據表,16位定時器/計數器)來獲得公式:

爲輸出的PWM頻率可以通過下面的等式

fPWM = fclk_IO/(N * (1 + TOP))

N變量代表分頻因子(1,8,64,256,或1024)來計算。

+0

我只是試圖弄清楚如何從這個公式中得到24KHZ ......我的代數有點生疏是10年失學 – michael 2012-02-16 23:09:10

+1

@michael簡單的數學:使用固定的'N'和計算'(fclk_IO /(N * fPWM )) - 1 = TOP'。將「TOP」值四捨五入到最接近的整數是您正在查找的設置。使用四捨五入的「TOP」整數,您可以使用我答案中的公式來知道準確的PWM頻率。如果你嘗試不同的'N'值,你會發現你使用的預分頻器值越高,頻率越準確。 – ouah 2012-02-16 23:34:45

+0

所以它會是16000000 /(8/2400000) - 1 = TOP爲16MHZ芯片試圖獲得24KHZ頻率? – michael 2012-02-17 00:14:00

2

爲16MHz /爲24KHz,讓你...

(16 * 1024 * 1024)/(24 * 1024)給你...

二萬四千五百七十六分之一千六百七十七萬七千二百十六給你...

682.667

因爲預分頻器只能是一個整數,並且取決於您需要的精度,所以您可以選擇在每第三個tick中更改軟件中的預分頻器值。例如,每前兩個蜱將有683預分頻器與每隔兩個刻度是682

+0

由於我們談論的是CPU時鐘速率,所以整個「2的冪」業務不適用於此(如果這是32k晶振,那可能是另一回事)。時鐘大概是16 * 1000 * 1000赫茲,名義上。這也將682.xyz更改爲,是的,666.666 ... – Dan 2012-02-17 06:43:18

+0

除非另有規定,否則晶振頻率總是***的兩倍。 – 2012-02-20 22:13:49