基于AT90S8515的定時計數器
AVR單片機的型號不同,定時/計數器的數量也不同。下面以AT90S8515單片機為例,介紹AVR單片機的定時/計數器。
AT90S8515有一個8位定時/計數器TCNTO和一個16位的定時/計數器TCNT1。二者均可對晶振時鐘CK、預定比例器時鐘源、或外部引腳脈沖進行計數。
AT90S8515的預定比例器將晶振時鐘CK進行8、64、256和1024分頻,分別為TCNTO、TCNT1提供不同頻率的時鐘源,包括:CK、CK/8、CK/64、CK/256、CK/1024、外部源EXTO、EXTI和停止。定時/控制寄存器TCCRO控制TCNTO的時鐘源,TCCRIA、TCCRIB控制TCNT1的時鐘源。定時/計數器溢出標志位在TIFR寄存器中,中斷使能位在TIMSK寄存器中。
一、8位定時/計數器TCNTO
1.TCNTO控制寄存器-TCCROTCCRO的I/O寄存器地址為$33(RAM地址為$53),復位時值為O。
TCCRO的低3位CS02、CS01、CSOO為TCNTO的時鐘源選擇位(對應關系如下表),高5位未用。
若用TO腳作時鐘源,須對數據方向控制寄存器進行相應設置。
2.定時/計數器TCNTOTCNTO的地址為$32($52),復位時值為O。
TCNTO是可讀寫的加計數器。若向TCNTO寫入時時鐘源正在工作,則數據寫入后繼續(xù)計數。
二、16位定時/計數器TCNT1
1.TCNT1有兩個輸出比較寄存器OCRIA、OCRIB,用于與TCNT1的計數值進行比較。輸出比較功能包括:比較匹配后的計數器清O,及比較匹配輸出引腳上的各種操作。
TCNT1可用于8位、9位、10位的脈沖調制器。在此模式下,定時器和OCR1A、OCR1B具有集中脈沖雙抗誤操作獨立的PWM能力。
TCNT1具有輸入捕獲功能,由輸入捕獲引腳ICP上的信號激活。捕獲信號的設置由TCNTI的控制寄存器TCCR1B來定義。模擬比較器也可觸發(fā)該捕獲事件。
TCNT1具有輸入捕獲噪聲消除器。如果該功能允許,則在輸入捕獲事件激活前需要4次以上的采樣監(jiān)測,輸入引腳信號以XTAL的時鐘頻率被采樣。
2.控制寄存器A-TCCRA TCCRA的地址為$2F($4F),復位時值為O,各位定義如下:
COMMlA1、COMMIAO為比較A輸出模式選擇,決定TCNT1在與OCRIA比較匹配之后的輸出引腳事件。輸出引腳事件影響OC1A,即輸出比較A(見上表)。
由于其對I/O口的可替換功能,此I/O口的方向控制位必須設為l,以便對輸出引腳進行控制。
COMM1B1、COMM1BO為比較B輸出模式選擇,決定TCNT1在與OCRIB比較匹配之后的輸出引腳OCIB的事件(見上表)。
在PWM模式下,上述4位的功能不同(見PWM模式下的定時計數器1)。
改變以上四位時,必須清除TIMSK中的中斷使能位來禁止輸出比較器中斷l(xiāng),否則將發(fā)生中斷。
PWM11、PWM10為脈沖寬度調制器選擇位(見下表)。
3.控制寄存器B-TCCRBTCCRB地址為$2E($4E),復位時值為O,各位定義如下: