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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論