定時器原理(包含軟定時器設(shè)計)_第1頁
定時器原理(包含軟定時器設(shè)計)_第2頁
定時器原理(包含軟定時器設(shè)計)_第3頁
定時器原理(包含軟定時器設(shè)計)_第4頁
定時器原理(包含軟定時器設(shè)計)_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第五章定時器PWM定時器本章目標2440PWM定時器的基本操作定時器中斷操作軟定時器的封裝特性–五個16位定時器–兩個8位預(yù)分頻器和兩個4位分頻器–可編程輸出波形的占空比控制(PWM)–自動重載模式或單脈沖模式–死區(qū)發(fā)生什么是定時器定時器的本質(zhì)就是一個遞減的計數(shù)器,根據(jù)觸發(fā)條件在計數(shù)器的值達到觸發(fā)條件的時候,觸發(fā)事件的發(fā)生。特性概述S3C2440A有5個16位定時器。其中定時器0、1、2和3具有脈寬調(diào)制(PWM)功能。定時器4是一個無輸出引腳的內(nèi)部定時器。定時器0還包含用于大電流驅(qū)動的死區(qū)發(fā)生器。定時器0和1共用一個8位預(yù)分頻器,定時器2、3和4共用另外的8位預(yù)分頻器。每個定時器都有一個可以生成5種不同分頻信號(1/2,1/4,1/8,1/16和TCLK)的時鐘分頻器。每個定時器模塊從相應(yīng)8位預(yù)分頻器得到時鐘的時鐘分頻器中得到其自己的時鐘信號。8位預(yù)分頻器是可編程的,并且按存儲在TCFG0和TCFG1寄存器中的加載值來分頻PCLK。功能框圖定時器0定時器1定時器2定時器3定時器4比定時器4多了具有脈寬調(diào)制(PWM)功能無輸出引腳內(nèi)部定時器比定時器1多了死區(qū)發(fā)生器步驟1:配置預(yù)分頻器和分頻值(TCFG0,TCFG1)目的產(chǎn)生一定的定時器時鐘周期時鐘頻率計算公式:定時器輸入時鐘頻率=PCLK/{預(yù)分頻值+1}/{分頻值}TCFGn定時器配制寄存器0(TCFG0)位[7:0]、位[15:8]分別用于控制預(yù)分頻器0、1,范圍0~255。經(jīng)過預(yù)分頻器出來的始終頻率:PCLK/{預(yù)分頻值+1}定時器配制寄存器1(TCFG1)經(jīng)過預(yù)分頻器的始終將被2、4、8、16分頻

示例:假設(shè)PCLK=50M,預(yù)分頻值=249,分頻值=8 時鐘頻率=50M/(249+1)/8=25Khz時鐘周期=1/25KHZ=40usTCFG0定時器配制寄存器0(TCFG0)TCFG1定時器配制寄存器1(TCFG1)步驟2:配置計數(shù)初始值(TCNTBn)目的產(chǎn)生一個計數(shù)初始值(注意:這里暫沒有設(shè)置比較值,不產(chǎn)生PWM脈沖控制)初始值計算公式:初始值=定時時間/時鐘周期問:假設(shè)時鐘周期已設(shè)置40us,若要定時500ms產(chǎn)生一次中斷,初始值等于多少?初始值=500ms/40us=12500TCNTBn、TCMPBn定時器計數(shù)寄存器和比較寄存器(TCNTB0/TCMPB0)步驟3:把初始值裝載進內(nèi)部TCNTn過程:設(shè)置TCON寄存器的手動更新位,當(dāng)給TCON寄存器的手動更新位置1,即將TCNTB0寄存器的值裝入內(nèi)部寄存器TCNT0(注意:第一次要手動更新)TCON功能位設(shè)置手動更新10:無用1:將TCNTB0/TCMPB0寄存器的值裝入內(nèi)部寄存器TCNT0/TCMP0步驟4:設(shè)置自動裝載,并清除手動更新目的:第一次手動更新后,TCNTn有計數(shù)值,但是當(dāng)計數(shù)到0時,沒有再給TCNTBn賦值就不會再計數(shù),所以設(shè)置自動裝載(注意:設(shè)置自動裝載后,要把手動更新清除)自動重載S3C2440APWM定時器包含雙緩沖功能,允許在不停止當(dāng)前定時器操作的情況下為下次定時器操作改變重載值。所以即使設(shè)置了新的定時器值,當(dāng)前定時器操作仍然順利的被完成。定時器值可以被寫入到定時器計數(shù)緩沖寄存器(TCNTBn)中并且可以從定時器計數(shù)監(jiān)視寄存器(TCNTOn)中讀取當(dāng)前定時器的計數(shù)值。如果讀取TCNTBn,讀出的值不是指示當(dāng)前計數(shù)器的狀態(tài)而是下次定時器持續(xù)時間的重載值。自動重載操作在TCNTn到達0時復(fù)制TCNTBn到TCNTn。如果需要改變TCNTBn,需執(zhí)行手動更新。TCNTBn的值,只有在TCNTn到達0并且使能了自動重載時才被加載到TCNTn。如果TCNTn變?yōu)?并且自動重載位為0,TCNTn不會進一步任何操作。TCON功能位設(shè)置開啟/停止00:停止定時器1:開啟定時器手動更新10:無用1:將TCNTB0/TCMPB0寄存器的值裝入內(nèi)部寄存器TCNT0/TCMP0自動加載30:不自動加載1:在定時器0計數(shù)達到0時,將TCNTB0/TCMPB0寄存器的值自動裝入內(nèi)部寄存器TCNT0/TCMP0步驟5:注冊定時器中斷服務(wù)函數(shù)并開啟定時器中斷

步驟6:開啟定時器功能位設(shè)置開啟/停止00:停止定時器1:開啟定時器要使用PWM脈寬調(diào)試的方法在原來的步驟2(配置計數(shù)初始值--TCNTBn)時,同時配置TCMPBn,并設(shè)置TCON的輸出反轉(zhuǎn)PWMTCON功能位設(shè)置開啟/停止00:停止定時器1:開啟定時器手動更新10:無用1:將TCNTB0/TCMPB0寄存器的值裝入內(nèi)部寄存器TCNT0/TCMP0輸出反轉(zhuǎn)20:TOUT0不反轉(zhuǎn);1:TOUT0反轉(zhuǎn)自動加載30:不自動加載1:在定時器0計數(shù)達到0時,將TCNTB0/TCMPB0寄存器的值自動裝入內(nèi)部寄存器TCNT0/TCMP0內(nèi)部結(jié)構(gòu)一個定時器(除了定時器4)包含TCNTBn,TCNTn,TCMPBn和TCMPn。(TCNTn和TCMPn是內(nèi)部寄存器的名稱。從TCNTOn寄存器中可以讀取TCNTn)當(dāng)定時器到達0時TCNTBn和TCMPBn被加載到TCNTn和TCMPn中。當(dāng)TCNTn到達0時,如果中斷為使能則將發(fā)生一個中斷請求。內(nèi)部工作流程定時器內(nèi)部控制邏輯工作流程:程序初始化,設(shè)定TCMPBn、TCNTBn這兩個寄存器,他們表示定時器n的比較值、初始計數(shù)值。隨之設(shè)置TCON寄存器啟動定時器n,這是TCMPBn、TCNTBn的值將被裝入其內(nèi)部寄存器TCMPn、TCNTn中。在定時器n的工作頻率下,TCNTn開始計數(shù),其值可以通過讀取TCNTOn寄存器獲得。當(dāng)TCNTn的值等于TCMPn的值時,定時器n的輸出管腳TOUTn反轉(zhuǎn);TCNTn繼續(xù)減1計數(shù)。當(dāng)TCNTn的值到達0時,其輸出管腳TOUTn再次反轉(zhuǎn)。并觸發(fā)定時器的中斷(假設(shè)中斷使能)當(dāng)TCNTn的值到達0時,如果TCON寄存器中將定時器n設(shè)為“自動加載”,則TCMPBn和TCNTBn寄存器的值被自動裝入TCMPn和TCNTn中,下一個計數(shù)流程開始。PWM假設(shè)設(shè)置TCNTBn為150,設(shè)置TCMPBn為100。置位手動更新位并且配制變相位(開/關(guān)),開啟自動裝載,清除手動更新位后,開啟定時器,則輸出波形如下:工作原理定時計數(shù)緩沖寄存器(TCNTBn)包含了一個(當(dāng)定時器被使能時)被加載到遞減計數(shù)器中的初始值。定時比較緩沖寄存器(TCMPBn)包含了與遞減計數(shù)器相比較的初始值。這種TCNTBn和TCMPBn的雙緩沖特征保證了改變頻率和占空比時定時器產(chǎn)生穩(wěn)定的輸出。每個定時器有它自己的由定時器時鐘驅(qū)動的16位遞減計數(shù)器。當(dāng)遞減計數(shù)器到達零時,產(chǎn)生定時器中斷請求通知CPU定時器操作已經(jīng)完成。當(dāng)定時器計數(shù)器到達零時,相應(yīng)的TCNTBn的值將自動被加載到遞減計數(shù)器以繼續(xù)下一次操作。然而,如果定時器停止了,例如,在定時器運行模式期間清除TCONn的定時器使能位,TCNTBn的值將不會被重新加載到計數(shù)器中。TCMPBn的值是用于脈寬調(diào)制(PWM)。當(dāng)遞減計數(shù)器的值與定時器控制邏輯中的比較寄存器的值相匹配時定時器控制邏輯改變輸出電平。因此,比較寄存器決定PWM輸出的開啟時間(或關(guān)閉時間)。過程分析1.使能自動重載功能。設(shè)置TCNTBn為160(50+110)并且設(shè)置TCMPBn為110。置位手動更新位并且配制變相位(開/關(guān)).手動更新位分別設(shè)置TCNTn和TCMPn到TCNTBn和TCMPBn的值中。然后分別設(shè)置TCNTBn和TCMPBn為80(40+40)和40,以決定下次重載值。2.設(shè)置啟動位,預(yù)設(shè)手動更新位為0,變相位為關(guān),自動重載位為開。定時器在定時器分辨率內(nèi)的等待時間后啟動遞減計數(shù)。3.當(dāng)TCNTn與TCMPn的值相同時,TOUTn的邏輯電平從低電平變?yōu)楦唠娖健_^程分析4.當(dāng)TCNTn到達0時,發(fā)出中斷請求并且TCNTBn的值加載到暫存器中。在下一個定時器標記時刻,重載TCNTn為暫存器(TCNTBn)的值。5.中斷服務(wù)程序(ISR)中,為下一個持續(xù)時間分別設(shè)置TCNTBn和TCMPBn為80(20+60)和60。6.當(dāng)TCNTn與TCMPn的值相同時,TOUTn的邏輯電平從低電平變?yōu)楦唠娖健?.當(dāng)當(dāng)TCNTn到達0時,觸發(fā)一個中斷自動重載TCNTn為TCNTBn的值。8.中斷服務(wù)程序(ISR)中,禁止自動重載和中斷請求以停止定時器。9.當(dāng)TCNTn與TCMPn的值相同時,TOUTn的邏輯電平從低電平變?yōu)楦唠娖健?0.盡管TCNTn到達0,但因為禁止了自動重載,所以TCNTn并不會再次重載并且定時器已經(jīng)停止了。11.不再產(chǎn)生中斷請求。配置定時器流程選擇一個定時器(0,1,2,3,4)設(shè)置預(yù)分頻值(TCFG0)設(shè)置分頻值(TCFG1)設(shè)置計數(shù)初始值(TCNTBn)設(shè)置TCON(手動更新,自動加載)清除TCON的手動更新開啟定時器開啟定時器中斷(定時器中斷使能)注冊定時器中斷服務(wù)函數(shù)代碼分析rTCFG0&=0xFF00FF;rTCFG0|=0xf900;//prescaler等于249rTCFG1&=~0xF0000;rTCFG1|=0x20000;//divider等于8,則設(shè)置定時器4的時鐘頻率為25kHzrTCNTB4=12500;//讓定時器4每隔0.5秒中斷一次

rTCON&=~0xF00000;rTCON|=0x700000;rTCON&=~0x200000;//定時器4開始工作硬件驅(qū)動硬件接口函數(shù):1、intTIMER_Init(intnTimerID,intnDiv0,intnDiv1)//配置預(yù)分頻比2、intTIMER_Create(......)//配置定時器3、intTIMER_Destory(intnTimerID)//注銷定時器中斷4、voidTIMER_Start(intnTimerID)//啟動定時器5、voidTIMER_Stop(intnTimerID)//停止定時器軟定

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論