|
發表於 2013-9-2 18:46:43
|
顯示全部樓層
本帖最後由 xiaolaba 於 2013-9-2 06:48 PM 編輯
大大, 或者這樣給你一個計算頻率的關係解釋, 會容易理解一些
頻率 = 1 / 週期
f = 1/ T
如果用1秒時長去觀察一個訊號, 得到 20 個週期的變化, 那
f = 20T/1sec = 20HZ = 1/T, T = 0.05sec
如果用0.1秒時長去觀察一個訊號, 得到 20 個週期的變化, 那
f = 20T/0.1sec = 200HZ = 0.1/T, T = 0.005sec
如果用0.01秒時長去觀察一個訊號, 得到 20 個週期的變化, 那
f = 20T/0.01sec = 2000HZ = 0.01/T, T = 0.0005sec
那假設用 10 MHZ 的 MCU, 怎樣算得 16MHZ 或更高頻率的訊號呢 ?
其實說穿了很簡單, 假設 CPU 的頻率 10MHZ, 那 TIMER 的速度可能是 1/100 = 0.1 MHZ
如果是 16 BIT 的計數器, 則每次計數器加一, 時間就是 1/0.1MHZ = 10us
那麼計數 65536 次就會 OVERFLOW, 耗時約 65536 x 10us = 0.65 秒
當然以上都是假設的, 但原理大概就是這樣, 還有一些實際上調配須要
例如, 選取觀察一個訊號時間長度, 通常用 2^n 作為計數值 和 計時值
原因是 8 BIT CPU 做除法非常慢, 但是移位運算則很快
例如 256 / 2 = 0xFF >> 1, 就是 0x11111111b 右移一位 = 0x01111111 = 0x7F = 128
所以選哪個時長去觀察一個訊號, 這個數值就很重要
另外, 還有一樣,
頻率 = 1 / 週期, 所以, 計數的時間長度通常選 1 秒, 1/2秒, 1/4秒....
原因是 1 = 2^0, 1/2 = 2^-1, 1/4 = 2^-2.....
以上兩個要素加在一起,
假設 0.5秒, 計數器得到 20 個訊號週期, 那頻率是多少呢 ?
f = 20 / 0.5 = 20 / 2^-1 = 20 * 2 = 20 << 1 = 40 HZ
假設 0.25秒, 計數器得到 20 個訊號週期, 那頻率是多少呢 ?
f = 20 / 0.25 = 20 * 4 = 20 << 2 = 80 HZ
是不是簡單又有效率算得頻率呢 ?
這個方法就是自動頻率量程的運作原理, 不斷地縮短或增長時間長度, 直到計數器有沒有 OVERFLOW
然後用移位法把計數器的值直接左移或右移, 頻率就算好了.
希望以上都沒有寫錯, 參考看看.
那你的問題呢
RPM = Revolution Per Minute
轉數 / 每分鐘 = 轉數 / 60秒
假設 600 RPM, 換成頻率
600轉 / 60 sec = 10轉/sec = 10HZ
到頭來還是一樣, 算頻率 HZ
http://en.wikipedia.org/wiki/Frequency |
|