
輸出、輸入與計時器
|
97
預先倍率暫存器
(Prescale register)
如圖 4-7 中顯示,將時脈除以特定值以降低時脈,減少觸發計時器的事件。
控制暫存器
(Control register)
設定計時器,並在設定完成後開始計數,通常控制暫存器也能夠重設計數器。
中斷暫存器
(Interrupt register)(
可能會有多個
)
如果系統支援計時器中斷,會需要透過適當的中斷暫存器加以開始、清除及檢查每
個計時器中斷的狀態。
每個處理器設定的方式都不同,使用手冊中會介紹正確的方式,其中的暫存器名稱可能
與本書使用的不同。
處理器可能只會在計時器溢位時才觸發計時器行為而非使用比對暫存器。
也就是將數值與計時器能表示的最大數值作比對(例如,對八位元計時器
而言就是 (2
8
)-1 = 255),透過調整預先倍率,能夠表示大多數數值,不
會有太多錯誤。
數學計算
計時器是為了處理實際的時間表(timescale)而設計,透過一系列的暫存器轉換為真實
的時間。要記得頻率(例如 14 Hz)是週期的倒數。
計時器頻率、時脈輸入、預先倍率,以及比對暫存器間的關係,其基本公式如下:
計時器頻率 = 輸入時脈 / ( 預先倍率 * 比對暫存器 )
這是個最佳化的問題,已知
輸入時脈
及目標
計時器頻率
,讀者需要調整預先倍率與比
對暫存器,直到計時器頻率足夠接近目標。如果沒有其他的限制,這個問題並不算太難
(但也並非那麼簡單)。