日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Timer和counter

發(fā)布時間:2023/12/18 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Timer和counter 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是Timer,什么是Counter

幾乎每個嵌入式板都會有counter和timer,重要性比肩gpio.本質(zhì)上來看timer和counter幾乎是一樣的東西,底層都是一個硬件counter,如果是按照規(guī)律的時間跳表,就是timer,如果是按照不規(guī)律的事件訊號跳表就是counter.一般timer/counter統(tǒng)一稱作timer.

?

Timer.

一個典型的Timer包含以下元件:

  • prescaler -- 除頻器,分頻器
  • N-bit的counter register
  • 一個或者多個capture register
  • 一個或者多個compare register

timer底層實際是counter,counter會計算輸入脈沖的數(shù)量,如果輸入脈沖式每隔固定時間發(fā)出一次,就是timer.至于這個計數(shù)器的大小其實和處理器架構(gòu)一點關(guān)系沒有,8bit的處理器也可以有16bit size的counter.32bit的處理器也可以有16bit的counter。

?

prescaler(除頻器)

prescaler是一個硬件元件,可以把用于驅(qū)動timer的clock(可能是cpu的clock,或是bus上的clock),以頻率已特定的倍數(shù)下降。一般來說可以除以2^n,或是除以1~2^P, P是prescaler存放除頻參數(shù)的bit數(shù)。

?

為什么需要使用prescaler

因為你必須把timer的觸發(fā)clock調(diào)整到你想要的頻率。因為counter的size是有限的,你使用的clock頻率越高,你的時間精密度就越高,但是相對的,你的timer最高能記得時間就會減少。例如你想要1us的精確度,但是你只有16bit-timer,那你就只能數(shù)到約65ms,counter就要重新數(shù)了。如果你想要讓counter一次可以數(shù)完一秒,那你就要每次16us才跳表。這就要透過除頻器來做取舍。不過改進的方法就是另外加一個repetition register,用于設(shè)定一個重復的次數(shù),可以讓你的counter重新數(shù)完n次之后,在發(fā)出數(shù)完了的中斷訊號。

假如每1us跳一次counter,16bit可以跳65546次,就只能數(shù)到65ms.

如果timer當計數(shù)器使用,通常會搭配另外一個time-based的timer,這樣你就可以衡量一個時間周期內(nèi),該事件發(fā)生幾次。

?

Timer Register

Timer Register其實就是一個N-bit的counter,可以向上數(shù),也可以向下,甚至可以向上數(shù)完再向下。你可以讀取,寫入,停止,歸零這個counter.當然,決定這個counter什么時候會計數(shù)跳表,取決于觸發(fā)該counter的來源.

Capture Register

capture register是一種如果被觸發(fā),就會把目前counter的值存起來的register。觸發(fā)的條件通常是輸入pin教改變了狀態(tài)。也就是說,Capture Register是一種當時間發(fā)生時,截取timer snapshot的register。capture register也可以設(shè)定產(chǎn)生一個interrupt,讓handler去保存剛剛街渠道的timer狀態(tài)。因為這是硬件觸發(fā)的,所以不會像軟件計數(shù)會有l(wèi)atency.所以capture register最簡單的用途就是計算兩個脈沖之間的時間間隔,把第一個和第二個訊號的snapshot counter相減,乘上每次counter+1的時間間隔,就代表兩次訊號的時間差。

Compare Register

也有人稱match register。他的用途和capture register正好相反。compare register會保存一個值。這個值會一直和timer目前的值做比較。如果當兩個值一樣時,就會發(fā)出一個訊號。因此這個是用于output訊號的register.如果你的timer是當成timer(計時)使用,那么compare register就可以用作每隔固定時間發(fā)出訊號。如果你的timer是當做計數(shù)器,那么compare register就變成一種當某個事件發(fā)生固定次數(shù)后,就會發(fā)出訊號的裝置。

因此這就可以當作稱PWM的功能。在timer=0是把output訊號設(shè)成high,然后設(shè)定compare register的值作為脈沖的寬度(pulse width),然后當比較相等的事件發(fā)生時,把output拉成low,再用另外一個compare register設(shè)定一個更大的時間,當時間到了之后把timer歸0,你就做出了PWM了。

參考:

https://embedded-note.hackpad.com/ep/pad/static/aUAsaFTHTUf

?

轉(zhuǎn)載于:https://www.cnblogs.com/biglucky/p/4894982.html

總結(jié)

以上是生活随笔為你收集整理的Timer和counter的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。