《ARM Cortex-A9多核嵌入式系統(tǒng)開發(fā)教程》課件第九章_第1頁
《ARM Cortex-A9多核嵌入式系統(tǒng)開發(fā)教程》課件第九章_第2頁
《ARM Cortex-A9多核嵌入式系統(tǒng)開發(fā)教程》課件第九章_第3頁
《ARM Cortex-A9多核嵌入式系統(tǒng)開發(fā)教程》課件第九章_第4頁
《ARM Cortex-A9多核嵌入式系統(tǒng)開發(fā)教程》課件第九章_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PWM定時(shí)器和WatchDog定時(shí)器9PWM定時(shí)器PWM定時(shí)器控制寄存器PWM定時(shí)器應(yīng)用實(shí)例WatchDog定時(shí)器WatchDog定時(shí)器控制寄存器WatchDog定時(shí)器程序?qū)嵗?章PWM定時(shí)器和WatchDog定時(shí)器9.1PWM定時(shí)器9.1.1PWM定時(shí)器概述

在Exynos4412處理器中,共有5個(gè)32位的具有脈沖寬度調(diào)制(PulseWidthModulation,PWM)功能的定時(shí)器,這些定時(shí)器都可產(chǎn)生內(nèi)部中斷信號(hào)給ARM子系統(tǒng)。另外,定時(shí)器0、1、2、3具有脈沖寬度調(diào)制功能,并可驅(qū)動(dòng)其對(duì)應(yīng)的I/O口。其中,定時(shí)器0有可選的死區(qū)(dead-zone)產(chǎn)生功能,用以支持大電流設(shè)備;定時(shí)器4是內(nèi)置的,沒有外部引腳。PWM定時(shí)器的特點(diǎn):●

5個(gè)32位定時(shí)器;●

2個(gè)8位的預(yù)分頻器對(duì)PLCK進(jìn)行第一次分頻,5個(gè)時(shí)鐘分頻器和多路復(fù)用器進(jìn)行第二次分頻;●?可編程選擇PWM通道;●

4個(gè)獨(dú)立的PWM通道,可編程進(jìn)行占空比和極性控制;第9章PWM定時(shí)器和WatchDog定時(shí)器PWM定時(shí)器的特點(diǎn):●?提供靜態(tài)配置方式,在PWM沒有啟動(dòng)時(shí)使用;●?提供動(dòng)態(tài)配置方式,在PWM運(yùn)行期間使用;●?支持自動(dòng)重載模式和觸發(fā)脈沖模式;●?兩個(gè)PWM輸出具有死區(qū)發(fā)生器;第9章PWM定時(shí)器和WatchDog定時(shí)器9.1.2PWM定時(shí)器工作原理5個(gè)定時(shí)器都采用APB-PCLK作為時(shí)鐘源。通過預(yù)分頻器進(jìn)行第一級(jí)分頻,其中定時(shí)器0和1共用一個(gè)可編程8位的預(yù)分頻器0,定時(shí)器2、3、4共用另外一個(gè)預(yù)分頻器1。之后,通過定時(shí)器各自的時(shí)鐘分頻器進(jìn)行第二級(jí)分頻,時(shí)鐘分頻器有5種分頻輸出(1/1,1/2,1/4,1/8,1/16)。然后,通過TCNTBn和TCMPBn進(jìn)行計(jì)數(shù)和電平翻轉(zhuǎn)。第9章PWM定時(shí)器和WatchDog定時(shí)器圖9.1Exynos4412PWM定時(shí)器的工作原理第9章PWM定時(shí)器和WatchDog定時(shí)器PWM定時(shí)器工作的具體過程:●?當(dāng)時(shí)鐘被使能后,定時(shí)器計(jì)數(shù)緩沖寄存器(TCNTBn)把計(jì)數(shù)初始值下載到遞減計(jì)數(shù)器(TCNTn)中,定時(shí)器比較緩沖寄存器(TCMPBn)把其初始值下載到比較寄存器(TCMPn)中。●遞減計(jì)數(shù)器從TCNTBn得到初值以后,按其時(shí)鐘頻率進(jìn)行遞減計(jì)數(shù)。當(dāng)其值達(dá)到0時(shí),產(chǎn)生定時(shí)器中斷請求并通知CPU該次計(jì)時(shí)完成?!馮CMPBn的值用于脈沖寬度調(diào)制。當(dāng)定時(shí)器的遞減計(jì)數(shù)器的值和比較寄存器的值相等時(shí),PWM輸出將改變輸出電平的狀態(tài)。第9章PWM定時(shí)器和WatchDog定時(shí)器9.1.3PWM定時(shí)器的死區(qū)功能

圖9.1中,XpwmTOUT0和XpwmTOUT1可用于電源設(shè)備的PWM控制。Exynos4412具有死區(qū)產(chǎn)生器,能夠產(chǎn)生如圖9.3所示的波形。這個(gè)功能允許在一個(gè)設(shè)備關(guān)閉和另外一個(gè)設(shè)備開啟之間插入一個(gè)時(shí)間間隔。這個(gè)時(shí)間間隔能夠有效防止兩個(gè)設(shè)備的同時(shí)啟/停。。第9章PWM定時(shí)器和WatchDog定時(shí)器圖9.3死區(qū)使能時(shí)的波形第9章PWM定時(shí)器和WatchDog定時(shí)器9.2PWM定時(shí)器控制寄存器定時(shí)器配置寄存器0(TFCG0)

該寄存器用于配置兩個(gè)8位預(yù)分配器的值和死區(qū)長度,如表9.1所示表9.1定時(shí)器配置寄存器0(TFCG0)第9章PWM定時(shí)器和WatchDog定時(shí)器2.定時(shí)器配置寄存器1(TFCG1)

該寄存器用于配置PWM定時(shí)器多路開關(guān)MUX的輸入,即選擇分頻器的值,如表9.2所示。表9.2定時(shí)器配置寄存器1(TFCG1)第9章PWM定時(shí)器和WatchDog定時(shí)器定時(shí)器的輸入頻率的計(jì)算公式為:定時(shí)器的輸入時(shí)鐘頻率?=?PCLK/({預(yù)分頻值?+?1})/{分頻值}其中:

預(yù)分頻值的取值范圍為1~255,按照表9.1;

各個(gè)定時(shí)器的分頻值則按表9.2列出的寄存器TCFG1中各對(duì)應(yīng)位域進(jìn)行設(shè)置;第9章PWM定時(shí)器和WatchDog定時(shí)器3.定時(shí)器控制寄存器(TCON)

該寄存器用于自動(dòng)重載、定時(shí)器自動(dòng)更新、定時(shí)器啟/停、輸出翻轉(zhuǎn)、死區(qū)啟/停等功能的控制,如表9.3所示。第9章PWM定時(shí)器和WatchDog定時(shí)器表9.3定時(shí)器控制寄存器(TCON)第9章PWM定時(shí)器和WatchDog定時(shí)器4.定時(shí)器計(jì)數(shù)緩沖寄存器(TCNTBn,n

=

0~4)該類寄存器用來預(yù)裝PWM定時(shí)器的計(jì)數(shù)初值,如表9.4所示。表9.4定時(shí)器比較緩沖寄存器第9章PWM定時(shí)器和WatchDog定時(shí)器5.定時(shí)器比較緩沖寄存器(TCMPBn,n

=

0~3)該類寄存器用來更改PWM波形的電平狀態(tài),從而更改PWM的占空比,如表9.5所示。表9.5定時(shí)器比較緩沖寄存器第9章PWM定時(shí)器和WatchDog定時(shí)器9.3PWM定時(shí)器應(yīng)用實(shí)例以產(chǎn)生定時(shí)器0中斷為例,介紹定時(shí)器0的配置過程。第9章PWM定時(shí)器和WatchDog定時(shí)器/*1.相關(guān)寄存器的定義,關(guān)聯(lián)各自的物理地址*/#include"int.h"#include"stdio.h"#define PWMTIMER_BASE (0x139D0000)#define TCFG0

(*((volatileunsignedlong*)(PWMTIMER_BASE+0x00)))#define TCFG1

(*((volatileunsignedlong*)(PWMTIMER_BASE+0x04)))#define TCON

(*((volatileunsignedlong*)(PWMTIMER_BASE+0x08)))#define TCNTB0

(*((volatileunsignedlong*)(PWMTIMER_BASE+0x0C)))#define TCMPB0

(*((volatileunsignedlong*)(PWMTIMER_BASE+0x10)))#define TCNTO0

(*((volatileunsignedlong*)(PWMTIMER_BASE+0x14)))#define

TINT_CSTA

(*((volatileunsignedlong*)(PWMTIMER_BASE+0x44)))#defineulongunsignedlongvoidpwm_stop(void);voidtimer_request(void);voidirq_handler(void);voidtimer_init(ulong

utimer,ulong

uprescaler,ulong

udivider,ulong

utcntb,ulong

utcmpb);voidirs_timer(?);intcounter=0; //用于記錄中斷發(fā)生的次數(shù)第9章PWM定時(shí)器和WatchDog定時(shí)器/*2.定義各個(gè)功能函數(shù)*/voidpwm_stop(void) //停止timer0{ TCON&=~0x1;}voidirs_timer(?) //?timer0中斷的中斷處理函數(shù){TINT_CSTAT|=(0x1<<5); //清timer0的中斷狀態(tài)寄存器printf("Timer0IntCounter=%d\r\n",counter++); //打印中斷發(fā)生次數(shù)

intc_clearvectaddr(?); //清除vic相關(guān)的中斷}第9章PWM定時(shí)器和WatchDog定時(shí)器voidtimer_request(void){ printf("\r\n#############Timertest############\r\n");

pwm_stop(?); //禁止timer0 counter=0; intc_setvectaddr(NUM_TIMER0,irs_timer); //設(shè)置timer0的中斷處理函數(shù),未列出函數(shù)原型 intc_enable(NUM_TIMER0); //使能timer0中斷,未列出函數(shù)原型 //設(shè)置timer0的參數(shù):定時(shí)器0,預(yù)分配值(65+1),分頻值4(0b0100), tcntb=62500,tcmpb=0 timer_init(0,66,4,62500,0); }第9章PWM定時(shí)器和WatchDog定時(shí)器9.4WatchDog定時(shí)器9.4.1看門狗原理

看門狗(WatchDog)原理上就是一個(gè)定時(shí)器。定時(shí)器對(duì)時(shí)鐘脈沖進(jìn)行計(jì)數(shù),當(dāng)定時(shí)器溢出時(shí),產(chǎn)生復(fù)位信號(hào),使得整個(gè)系統(tǒng)復(fù)位。在正常的程序或嵌入式系統(tǒng)中,需要定期對(duì)看門狗進(jìn)行復(fù)位,使其重新計(jì)數(shù),這樣定時(shí)器不會(huì)溢出而導(dǎo)致復(fù)位系統(tǒng),從而保證系統(tǒng)的正常運(yùn)行。

看門狗的作用就是防止系統(tǒng)因意外而“跑飛”;而在可能導(dǎo)致整個(gè)系統(tǒng)癱瘓時(shí),保證系統(tǒng)能夠在無人監(jiān)守的情況下仍然能夠復(fù)位,正常運(yùn)行。第9章PWM定時(shí)器和WatchDog定時(shí)器9.4.2Exynos4412看門狗控制Exynos4412處理器的看門狗模塊如圖9.4所示,包括一個(gè)預(yù)分頻因子、一個(gè)四分頻的分頻器和一個(gè)16位的計(jì)數(shù)器。輸入時(shí)鐘為PCLK,它經(jīng)過兩級(jí)分頻(預(yù)分頻和分頻),將分頻后的時(shí)鐘作為該定時(shí)器的輸入時(shí)鐘。當(dāng)計(jì)數(shù)器計(jì)滿后可以產(chǎn)生中斷或者復(fù)位信號(hào)。第9章PWM定時(shí)器和WatchDog定時(shí)器圖9.4Exynos4412處理器的看門狗模塊第9章PWM定時(shí)器和WatchDog定時(shí)器看門狗定時(shí)器計(jì)數(shù)值的計(jì)算公式如下:輸入到計(jì)數(shù)器的時(shí)鐘周期t_WatchDog=1/(PCLK/(預(yù)分頻值?+?1)/分頻值)其中:預(yù)分頻器(Prescaler,取值范圍為0~254)及分頻因子(Divisionfactor,取值為16、32、64、128)的值由用戶在WTCON(看門狗時(shí)鐘控制寄存器)中設(shè)置。第9章PWM定時(shí)器和WatchDog定時(shí)器(2)看門狗的定時(shí)周期為T?=?計(jì)數(shù)值(WTCNT初值?-?WTCNT當(dāng)前值)?*t_WatchDog其中,WTCNT為看門狗計(jì)數(shù)寄存器,用來設(shè)置計(jì)數(shù)多少個(gè)時(shí)鐘周期,乘以時(shí)鐘周期則是定時(shí)的總時(shí)間。第9章PWM定時(shí)器和WatchDog定時(shí)器9.5WatchDog定時(shí)器控制寄存器1.看門狗時(shí)鐘控制寄存器(WTCON)

該寄存器用于配置用戶是否啟用看門狗定時(shí)器、預(yù)分頻值、4個(gè)分頻比的選擇、是否允許中斷產(chǎn)生、是否允許復(fù)位操作等。表9.6看門狗時(shí)鐘控制寄存器(WTCON)第9章PWM定時(shí)器和WatchDog定時(shí)器2.看門狗數(shù)據(jù)寄存器(WTDAT)WTDAT用于指定定時(shí)時(shí)間。在初始化看門狗操作后,看門狗寄存器的值不能被自動(dòng)裝載到看門狗計(jì)數(shù)器(WTCNT)中。表9.7看門狗數(shù)據(jù)寄存器(WTDAT)第9章PWM定時(shí)器和WatchDog定時(shí)器3.看門狗計(jì)數(shù)寄存器(WTCNT)WTCNT用于設(shè)定看門狗定時(shí)器工作時(shí)計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值。初始化看門狗操作后,看門狗數(shù)據(jù)寄存器的值不能被自動(dòng)裝載到看門狗計(jì)數(shù)寄存器中。表9.8看門狗計(jì)數(shù)寄存器(WTCNT)第9章PWM定時(shí)器和WatchDog定時(shí)器9.6WatchDog定時(shí)器程序?qū)嵗?.看門狗程序設(shè)計(jì)思路一般流程如下:(1)設(shè)置看門狗中斷操作,包括全局中斷和看門狗中斷的使能以及看門狗中斷向量的定義。如果只是進(jìn)行復(fù)位操作,這一步可以不用設(shè)置。(2)對(duì)看門狗控制寄存器進(jìn)行設(shè)置,包括設(shè)置預(yù)分頻因子、分頻器的分頻值、中斷使能和復(fù)位使能等。(3)對(duì)看門狗數(shù)據(jù)寄存器(WTDAT)和看門狗計(jì)數(shù)寄存器(WTCNT)進(jìn)行設(shè)置。(4)啟動(dòng)看門狗定時(shí)器。第9章PWM定時(shí)器和WatchDog定時(shí)器2.看門狗程序設(shè)計(jì)#include"int.h"#include"stdio.h"#defineWDT_BASE (0x10060000)#defineWTCON (*((volatileunsignedlong*)(WDT_BASE+0x00)))#defineWTDAT (*((volatileunsignedlong*)(WDT_BASE+0x04)))#defineWTCNT (*((volatileunsignedlong*)(WDT_BASE+0x08)))#defineWTCLRINT (*((volatileunsignedlong*)(WDT_BASE+0x0C)))#defineulongunsignedlongvoidisr_wtd(void);voidwtd_operate(ulonguenreset,ulonguenint,ulonguselectclk,ulonguenwtd,ulong uprescaler,ulonguwtdat,ulonguwtcnt);第9章PWM定時(shí)器和WatchDog定時(shí)器voidwtd_test(void){ printf("\r\n\r\n#############WatchDogtest#############\r\n");

//設(shè)置看門狗中斷的中斷處理函數(shù) intc_setvectaddr(NUM_WDT,isr_wtd); intc_enable(NUM_WDT); //使能看門狗中斷 wtd_operate(0,1,0,1,100,100000000,100000000); //測試看門狗的定時(shí)功能}第9章PWM定時(shí)器和WatchDog定時(shí)器//看門狗中斷處理函數(shù)voidisr_wtd(?){ staticintwtdcounter=0; //記錄中斷發(fā)生次數(shù) printf("%d\r\n",++wtdcounter); WTCLRINT=1; //看門狗

溫馨提示

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

評(píng)論

0/150

提交評(píng)論