2011年2月27日 星期日

DIY - PIC: PIC18F4550 Timer0 工作原理 (廿十五)

DIY - PIC PIC18F4550 Timer0 工作原理 (廿十五)

Microchip PIC18F4550 內置有四個 Timer (Timer0 / Timer1 / Timer2 / Timer3),每個 Timer都有不一樣的功能,深入了解 Timer 結構及工作原理,便可以運用作不同的設計。Timer0 (TMR0) 是所有 PIC 微控制器基本的 8 位定時器。


Timer0 模組具有以下特徵:
  • 可通過軟體選擇,作為8 位或16 位計時器/ 計數器
  • 可讀寫的寄存器
  • 專用的8 位元軟體可編程預分頻器
  • 可選的時鐘源(內部或外部)
  • 外部時鐘的邊沿選擇
  • 溢出中斷
Timer0 既可用作計時器 (Timer) 亦可用作計數器 (Counter) ,可作 8位元模式或 16 位元模式。當用作計時器 (Timer)Timer0 計時器可以看作同一個遞增寄存器,在每個指令週期 (¼的時鐘速率),不使用預分頻器。20MHz 振盪器,定時器寄存器的速度遞增為 0.2us。八位寄存器保存的值是在範圍 0 255 的十進制。當計數器溢出寄存器復位。如果寫入 TMR0 寄存器,那麼在隨後的兩個指令週期內,計數將不再遞增。用戶可通過將校正值寫入 TMR0 寄存器來避開上述問題。

8 16 位模式計時器簡化框圖
Timer0 在計數器 (Counter) 模式下, Timer0 可在 RA4/T0CKI 引腳檢測輸入信號的每個上升沿或下降沿而遞增。可選擇上升沿或下降沿作觸發信號。

▲上升沿或下降沿作觸發信號工作框圖
Timer0 的中斷是當 TMR0 寄存器發生溢出時(8 位元模式下 - FFh 00h;或16 位元模式下 - FFFFh 0000h),將產生 TMR0 中斷。這種溢出會將標誌位元 TMR0IF 1。可以通過清零 TMR0IE 位(INTCON<5>)來遮罩此中斷。在重新允許該中斷前,必須在中斷服務程式中用軟體清零 TMR0IF 位。由於 Timer0 在休眠模式下是關閉的,所以 TMR0 中斷無法將處理器從休眠狀態喚醒。

 
Timer0 模組的預分頻器為一個 8位計數器。此預分頻器不可直接讀寫。其值通過 PSA T0PS2:T0PS0 位(T0CON<3:0>)來設置,此位決定預分頻器的分配和預分頻比值。預分頻比值可以在 1:2 1:256 之間進行選擇。
▲ Timer0 控制寄存器 (T0CON)
2011 02 27 天氣報告
氣溫:19.5 @ 23:00 
相對濕度:百分之90% 
天氣:天色大致良好

沒有留言:

張貼留言