定時(shí)器和中斷系統(tǒng)(4.25)_第1頁
定時(shí)器和中斷系統(tǒng)(4.25)_第2頁
定時(shí)器和中斷系統(tǒng)(4.25)_第3頁
定時(shí)器和中斷系統(tǒng)(4.25)_第4頁
定時(shí)器和中斷系統(tǒng)(4.25)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2.5片內(nèi)外設(shè)

’C54x

片內(nèi)外設(shè)包含如下幾部分:⑴外部總線操作;⑵通用I/O口(引腳);⑶定時(shí)器;⑷時(shí)鐘發(fā)生器;⑸主機(jī)接口;⑹同步串行接口;⑺時(shí)分復(fù)用串行接口(TDM);⑻軟件可編程等待狀態(tài)發(fā)生器;⑼可編程存儲(chǔ)器組切換模塊。JTAG接口2.5.1通用I/O口

通用I/O口有兩個(gè):跳轉(zhuǎn)控制輸入引腳BIO和外部標(biāo)志輸出引腳XF⒈跳轉(zhuǎn)控制輸入引腳BIO:該引腳可用于監(jiān)視外部設(shè)備的狀態(tài)。程序可以根據(jù)引腳BIO輸入狀態(tài)有條件地執(zhí)行一個(gè)分支轉(zhuǎn)移。條件執(zhí)行指令:

XCn,

cond[,cond[,cond]操作數(shù)n=1或2功能:1、如果n=1且條件滿足,則在該指令之后的一條1-字指令被執(zhí)行;

2、如果n=2且條件滿足,則在該指令之后的一條2-字指令或兩條1-字指令被執(zhí)行。

3、如果條件未滿足,則根據(jù)n=1或2執(zhí)行一條或兩條NOP指令。例一:XC1,ALEQ;如果A的值小于或等于0,則執(zhí)行1字指令MAR*AR1+以修改AR1MAR*AR1+ADDA,DAT100

指令執(zhí)行前指令執(zhí)行后

A=FFFFFFFFFFh A=FFFFFFFFFFh AR1=0031h AR1=0032h例二:XC2,BIO;如果引腳BIO為低電平(條件滿足),則執(zhí)行后面的一條雙字指令或2條單字指令。⒉外部標(biāo)志輸出引腳XF外部標(biāo)志輸出引腳XF可以用于向外部設(shè)備發(fā)出信號(hào)。XF信號(hào)可以由軟件控制。通過對(duì)STl(bit13)中的XF位置1或清0,XF引腳輸出為高電平和低電平,亦即CPU向外部發(fā)出1和0信號(hào)。

執(zhí)行指令:

SSBXXF;對(duì)XF置位

RSBXXF

;對(duì)XF復(fù)位2.5.2定時(shí)器

C5402內(nèi)部有定時(shí)器0和定時(shí)器1兩個(gè)定時(shí)器。結(jié)構(gòu)一樣。片內(nèi)硬件定時(shí)器是軟件可編程的,可用于周期性地產(chǎn)生中斷。定時(shí)器可以用來產(chǎn)生外部接口電路的采樣時(shí)鐘,如模擬接口。

1.定時(shí)器的結(jié)構(gòu)和特點(diǎn)定時(shí)器主要由3個(gè)16位的存儲(chǔ)器映像寄存器及相應(yīng)的邏輯控制電路組成。3個(gè)存儲(chǔ)器映像寄存器的地址列于下表中。Timer0地址Timer1地址寄存器說明0024H0030HTIM定時(shí)器寄存器,每計(jì)數(shù)一次自動(dòng)減10025H0031HPRD定時(shí)器周期寄存器,當(dāng)TIM減為0后,CPU自動(dòng)將PRD的值裝入TIM0026H0032HTCR定時(shí)器控制寄存器,包含定時(shí)器的控制和狀態(tài)位

C54xDSP定時(shí)器結(jié)構(gòu)如下圖所示。它由兩個(gè)基本功能塊組成,即主定時(shí)器模塊(PRD和TIM)、預(yù)定標(biāo)器模塊(TCR中的TDDR和PSC等)及相應(yīng)的邏輯控制電路。主定時(shí)器模塊(由PRD和TIM組成)預(yù)定標(biāo)器模塊(由TCR的TDDR和PSC位組成)。

*定時(shí)器寄存器(TIM):是減1計(jì)數(shù)器,可加載周期寄存器PRD的值,并隨計(jì)數(shù)減少。*定時(shí)器周期寄存器(PRD):PRD用于重載定時(shí)器寄存器(TIM)。定時(shí)器控制寄存器(TCR)TCR包含定時(shí)器的控制和狀態(tài)位,控制定時(shí)器的工作過程。定時(shí)器主要特點(diǎn):(1)定時(shí)器是一個(gè)減計(jì)數(shù)器。(2)由16位計(jì)數(shù)器和4位預(yù)分頻計(jì)數(shù)器組成。16位計(jì)數(shù)器的觸發(fā)脈沖由預(yù)分頻計(jì)數(shù)器提供,預(yù)分頻計(jì)數(shù)器的觸發(fā)脈沖是CPU時(shí)鐘信號(hào)。(3)有復(fù)位功能。(4)可以選擇調(diào)試斷點(diǎn)時(shí)定時(shí)器的工作方式。定時(shí)器控制寄存器的控制和狀態(tài)位如下:2.定時(shí)器控制寄存器(TCR)

TCR各位的意義描述如下表所示

3.定時(shí)器工作原理定時(shí)器的工作過程:定時(shí)器的基準(zhǔn)工作脈沖由CLKOUT提供,每來一個(gè)脈沖,預(yù)定標(biāo)計(jì)數(shù)器PSC減1,當(dāng)PSC減至0時(shí),下一個(gè)脈沖到來時(shí),PSC產(chǎn)生借位。借位信號(hào)分別控制定時(shí)計(jì)數(shù)器TIM減1和重新將TDDR的內(nèi)容加載到預(yù)定標(biāo)計(jì)數(shù)器PSC。每次定時(shí)計(jì)數(shù)器TIM

減為0時(shí),PSC的下一個(gè)借位信號(hào)到來時(shí),TIM也產(chǎn)生借位信號(hào),此借位信號(hào)作為中斷信號(hào)送到CPU和定時(shí)器輸出引腳TOUT

,同時(shí)控制或門3重新用PRD值裝載TIM

定時(shí)器的基本定時(shí)周期(定時(shí)時(shí)間)T可由下式計(jì)算:

T=TCLKOUT*(TDDR+1)*(PRD+1)

4.定時(shí)器的初始化初始化定時(shí)器的步驟如下:(1)對(duì)寄存器TCR中的TSS位置1,停止定時(shí)器工作;(2)裝入PRD初值;(3)重新裝入TCR:初始化TDDR、將TSS清0啟動(dòng)定時(shí)器、將TRB置1重新裝入定時(shí)初值(PRD加載到TIM,TDDR加載到PSC)。使能定時(shí)器中斷的操作步驟如下(假定INTM=1):(1)

將IFR中的TINT位置1,清除尚未處理完(掛起)的定時(shí)器中斷。(2)

將IMR中的TINT位置1,使能定時(shí)器中斷。(3)

將ST1中的INTM位清0,開放所有的中斷。例:用TMS320C54x作為信號(hào)發(fā)生器,輸出周期為8ms的方波信號(hào)。假定主頻f=10MHz。編寫出匯編源程序。解:因?yàn)檩敵龇讲ㄖ芷跒?ms,所以定時(shí)中斷周期T(即定時(shí)時(shí)間)應(yīng)為4ms,每中斷1次將XF引腳的電平取反1次便可在XF引腳產(chǎn)生周期為8ms的方波。(TDDR+1)(PRD+1)=T*f,T*f=4*10-3*10*106=40000取TDDR+1=16,則PRD+1=40000/16=2500則TDDR=15,PRD=2499=9C3H程序如下:

.mmregs .def START .def INTSERVEX .usect "STACK",10定時(shí)器的使用FLAG .set 60h .textSTART: STM #X+10,SP STM #0120H,PMST;中斷向量表首址0100h,定時(shí)

;器中斷向量014ch STM #0010H,TCR STM #9C3H,PRD STM #0FEFH,TCRSSBXXFSTM#1,FLAG STM #08H,IFR STM #08H,IMR RSBX INTM WAIT: B WAIT;以下是中斷服務(wù)程序INTSERVE: RSBX CPL LD #0,DP BITF FLAG,#1 BC XFOUT,NTC RSBX XF STM #0,FLAG B NEXTXFOUT: SSBX XF STM #1,FLAGNEXT: RETE .end指令BITF Smem,#lk功能:如果((Smem)ANDlk)=0

否則 說明:該指令檢測數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem的某位或多位,若指定位(一位或多位)為0,狀態(tài)寄存器ST0中的TC位清0,否則置1。常數(shù)lk用于屏蔽待檢測位。要檢測Smem中某位或某幾位是否為1時(shí),常數(shù)lk中與之對(duì)應(yīng)的位應(yīng)為1,而其他位為0。例BITF60H,#0001H指令執(zhí)行前 TC=XDP=0RAM:(60H)=1205H7、命令文件的編寫命令文件在片內(nèi)RAM中定義幾個(gè)區(qū)間,用于存放與主程序和中斷服務(wù)程序、中斷向量表、堆棧相應(yīng)的段。指令執(zhí)行后TC=1DP=0RAM:(60H)=1205H定時(shí)器的使用用定時(shí)器可以實(shí)現(xiàn)方波發(fā)生器、脈沖頻率監(jiān)測器、周期信號(hào)周期監(jiān)測等功能。

ORM #0010h,TCR0;停止定時(shí)器0STM #799,TIM0STM #799,PRD0STM #K_TCR0,TCR0;啟動(dòng)定時(shí)器0中斷;K_TCR0=0269HST #0FFFFh,IFR;初始化中斷

ORM #0008h,IMRRSBXINTM 例如:用定時(shí)器設(shè)計(jì)一個(gè)周期為4ms的方波信號(hào)發(fā)生器。假設(shè)DSP主頻為4MHZ(TCLKOUT=250ns),方波信號(hào)周期為4ms,那么定時(shí)中斷周期應(yīng)為T=2MS,每中斷一次,輸出端電平取反一次。定時(shí)中斷周期T=TCLKOUT*(TDDR+1)*(PRD+1),假設(shè)TDDR=9,那么PRD=799(031FH). 15-1211109-6543-0保留softfreePSCTRBTSSTDDR預(yù)定標(biāo)計(jì)數(shù)器定時(shí)器重新加載控制位定時(shí)器停止位定時(shí)器分頻系數(shù);K_TCR0設(shè)置定時(shí)器0控制寄存器的內(nèi)容K_TCR0_SOFT.set0b<<11K_TCR0_FREE.set0b<<10K_TCT0_PSC.set1001b<<6K_TCT0_TRB.set1b<<5K_TCT0_TSS.set0b<<4K_TCT0_TDDR.set1001b<<0K_TCR0.setK_TCR0_SOFT|K_TCR0_FREE|K_TCT0_PSC|K_TCT0_TRB|K_TCT0_TSS|K_TCR0_TDDR;初始化定時(shí)器0

t0_flag.usect"vars",1

timout:PSHMST0 PSHMST1BITFt0_flag,#1 BCxf_out,NTC SSBXXF ST#0,t0_flag Bnextxf_out:RSBXXF ST#1,t0_flagnext: POPMST1POPMST0 RETE;當(dāng)前XF輸出電平標(biāo)志位,如果t1_flag=1,;則XF=1;如果t1_flag=0,則XF=0

.sect“.vector”rst:b_c_int00

nop

nop

nop space18*4*16tint0: btimout

利用DSP的定時(shí)器,在XF引腳輸出一個(gè)頻率為1kHz的方波。編程要求:(1)DSP實(shí)驗(yàn)板上晶振頻率為16MHz,對(duì)時(shí)鐘發(fā)生器的PLL編程,使CPU的時(shí)鐘頻率為32MHz;(2)定時(shí)器采用中斷方式定時(shí),將中斷向量表移到從0100h單元開始的程序存儲(chǔ)空間。1、計(jì)算定時(shí)器的參數(shù)TDDR和PRD2、由中斷向量表起始地址0100H求出IPTR值3、由IPTR、MP/MC、OVLY、DROM、CLKOFF等的值求得PMST的值。4、由中斷向量表起始地址0100H和定時(shí)器0的中斷號(hào)求得定時(shí)器0的中斷向量地址5、編寫主程序。主程序主要是對(duì)DSP初始化,主要包括:(1)設(shè)置堆棧和堆棧指針(中斷時(shí)堆棧用于保存斷點(diǎn)地址)(2)PMST寄存器的初始化(3)定時(shí)器的初始化(包括中斷初始化)6、編寫中斷服務(wù)程序中斷服務(wù)程序主要作用是:每次定時(shí)時(shí)間到時(shí),將XF引腳的狀態(tài)取反。但DSP沒有取反指令,因此,進(jìn)入中斷服務(wù)程序后首先要判斷XF引腳的當(dāng)前狀態(tài),若為1則修改為0,若為0則修改為1。為此,需要將數(shù)據(jù)存儲(chǔ)器的某個(gè)單元作為標(biāo)志單元,該單元的某個(gè)位作為標(biāo)志位,用此標(biāo)志位來標(biāo)志XF引腳的狀態(tài)。每次進(jìn)入中斷服務(wù)程序后通過檢測該標(biāo)志位的值來判斷XF引腳當(dāng)前的狀態(tài)。指令BITF Smem,#lk功能:如果((Smem)ANDlk)=0

否則 說明:該指令檢測數(shù)據(jù)存儲(chǔ)器操作數(shù)Smem的某位或多位,若指定位(一位或多位)為0,狀態(tài)寄存器ST0中的TC位清0,否則置1。常數(shù)lk用于屏蔽待檢測位。要檢測Smem中某位或某幾位是否為1時(shí),常數(shù)lk中與之對(duì)應(yīng)的位應(yīng)為1,而其他位為0。例BITF60H,#0001H指令執(zhí)行前 TC=XDP=0RAM:(60H)=1205H7、命令文件的編寫命令文件在片內(nèi)RAM中定義幾個(gè)區(qū)間,用于存放與主程序和中斷服務(wù)程序、中斷向量表、堆棧相應(yīng)的段。指令執(zhí)行后TC=1DP=0RAM:(60H)=1205H練習(xí)解答5.3鏈接命令文件有什么作用?在生成DSP代碼過程中何時(shí)發(fā)揮這些作用?答:鏈接命令文件的主要作用有兩方面:一是利用MEMORY命令定義目標(biāo)系統(tǒng)的存儲(chǔ)器配置,包括對(duì)存儲(chǔ)器各部分命名,以及規(guī)定它們的起始地址和長度;一是利用SECTIONS命令告訴鏈接器如何將輸入段組合成輸出段,以及將輸出段放在存儲(chǔ)器中的什么位置。這些作用是在鏈接器對(duì)目標(biāo)文件進(jìn)行鏈接的過程中起作用的。

5.10在文件的鏈接過程中,需要用到Linker命令文件。請(qǐng)按如下參數(shù)設(shè)計(jì)一個(gè)命令文件,其參數(shù)為: 中斷向量表起始地址為7600H;長度為8000H; 源程序代碼在中斷向量之后; 初始化數(shù)據(jù)起始為1F10H;長度為4000H; 未初始化數(shù)據(jù)在初始化數(shù)據(jù)之后。解:命令文件為:MEMORY{PAGE0:PROM: org=7600h,len=8000hPAGE1:DRAM: org=1F10h,len=4000h}SECTIONS{.vectors :>PROMPAGE0.text :>PROMPAGE0.data :>DRAMPAGE1.bss :>DRAMPAGE1}2.6中斷系統(tǒng)

C54xDSP既支持軟件中斷,也支持硬件中斷:1、軟件中斷:由程序指令(INTR、TRAP或RESET)請(qǐng)求的中斷。2、硬件中斷:由物理設(shè)備信號(hào)請(qǐng)求的中斷,他有兩種形式:①受外部中斷口信號(hào)觸發(fā)的外部硬件中斷。②受片內(nèi)外設(shè)信號(hào)觸發(fā)的內(nèi)部硬件中斷。一、中斷分類分成如下兩大類:可屏蔽中斷和不可屏蔽中斷。1、可屏蔽中斷:可以用軟件來屏蔽或使能的中斷’C54xDSP最多可以支持16個(gè)用戶可屏蔽中斷,例如’C5402只使用14個(gè)可屏蔽中斷。這14個(gè)中斷的硬件名稱為:

RINT0、XINT0、RINT1和XINT1(串行口中斷)③TINT0、TINT1(定時(shí)器中斷)④HPINT、DMAC0、DMAC4、

DMAC52、非屏蔽中斷:這些中斷是不能夠屏蔽的。包括所有的軟件中斷,以及兩個(gè)外部硬件中斷(復(fù)位和)。

C5402中斷源的中斷向量及硬件中斷優(yōu)先權(quán)二、中斷標(biāo)志寄存器(IFR)

中斷標(biāo)志寄存器:是一個(gè)存儲(chǔ)器映射的CPU寄存器,每個(gè)可屏蔽中斷在IFR中有其相應(yīng)的中斷標(biāo)志位,當(dāng)CPU接收到可屏蔽中斷請(qǐng)求時(shí),IFR相應(yīng)的位置1。直到CPU響應(yīng)該中斷為止。

將中斷標(biāo)志清0

的4種方法:①’C54xDSP復(fù)位(引腳為低電平)。②中斷得到處理。③將1寫到IFR中的適當(dāng)位(相應(yīng)的位變?yōu)?),相應(yīng)的尚未處理的中斷被清除。④利用合適的中斷號(hào)執(zhí)行INTR指令。三、中斷屏蔽寄存器(IMR)

中斷屏蔽寄存器(IMR):是一個(gè)存儲(chǔ)器映射的CPU寄存器,用來屏蔽外部和內(nèi)部的可屏蔽中斷。

如果狀態(tài)寄存器ST1中的INTM位=1,IMR無效。當(dāng)ST1中的INTM位=0時(shí),

IMR寄存器中的某一位為1,就使能相應(yīng)的中斷。用戶可以對(duì)IMR寄存器進(jìn)行讀寫操作。

四、處理中斷的步驟

’C54xDSP處理中斷分如下三個(gè)步驟:1、接收中斷請(qǐng)求通過軟件(程序代碼)或硬件(引腳或片內(nèi)外設(shè))請(qǐng)求掛起主程序。如果中斷源正在請(qǐng)求一個(gè)可屏蔽中斷,則當(dāng)中斷被接收到時(shí)中斷標(biāo)志寄存器(IFR)的相應(yīng)位被置1。(1)

硬件中斷請(qǐng)求

’C5402硬件中斷的請(qǐng)求信號(hào):

外部中斷口可屏蔽中斷:

INT3~INT0引腳;

外部口非屏蔽中斷:RS和NMI引腳;

片內(nèi)外設(shè)中斷:BRINT0、BXINT0、BRINT1和BXINT1(串口中斷)

TINT0、TINT1(定時(shí)器中斷);

DMAC4、DMAC5(DMA中斷);

HPINT(HPI中斷)。

(2)

軟件中斷請(qǐng)求

軟件中斷是由程序指令產(chǎn)生的中斷請(qǐng)求,主要有3條指令:

INTR、TRAP

、RESET指令軟件中斷指令

INTR:語法:INTRK;K為中斷號(hào),0≤K≤31執(zhí)行:例

INTR3指令執(zhí)行前PC=0025h,IPTR=1FFhINTM=0SP=1000hRAM:(0FFFh)=9653h指令執(zhí)行后PC=FF8ChINTM=1SP=0FFFhRAM:(0FFFh)=0026h軟件中斷指令TRAP:語法:TRAPK;K為中斷號(hào),0≤K≤31執(zhí)行:軟件復(fù)位指令RESET:語法:RESET;無操作數(shù)執(zhí)行:對(duì)PC、ST0、ST1、IFR加載初始值如下:(IPTR)<<7→PC1→C0→DP0→BRAF0→C160→CPL0→OVM0→OVA1→TC1→SXM0→HM0→FRCT1→INTM0→OVB0→ARP0→ASM1→XF0→CMPT0→IFR該指令執(zhí)行非屏蔽的軟件復(fù)位,以便使C54x處于一個(gè)可知狀態(tài)。2、應(yīng)答中斷

對(duì)于軟件中斷和非屏蔽的硬件中斷,CPU將立即響應(yīng),進(jìn)入相應(yīng)中斷服務(wù)程序。

對(duì)于硬件可屏蔽中斷,滿足以下3種條件CPU才能響應(yīng)中斷。

中斷優(yōu)先級(jí)最高(當(dāng)同時(shí)出現(xiàn)一個(gè)以上中斷請(qǐng)求時(shí))。②INTM位清0。③IMR屏蔽位為1。

滿足上述條件后,CPU響應(yīng)中斷,終止當(dāng)前正進(jìn)行的操作,指令計(jì)數(shù)器PC自動(dòng)轉(zhuǎn)向相應(yīng)的中斷向量地址,取出中斷服務(wù)程序地址,并發(fā)出硬件中斷響應(yīng)信號(hào)IACK,而清除相應(yīng)的中斷標(biāo)志位。⒊執(zhí)行中斷服務(wù)程序(ISR)

當(dāng)應(yīng)答中斷后,CPU會(huì)采取如下的操作:1、把程序計(jì)數(shù)器(PC)值(返回地址)壓入堆棧;注意:程序計(jì)數(shù)器擴(kuò)展寄存器(XPC)不會(huì)自動(dòng)保存在堆棧中。因此,如果ISR位于和中斷向量表不同的頁面,用戶必須在分支轉(zhuǎn)移到ISR之前壓入XPC到堆棧中。FRET[E]指令可以用于從ISR返回。2、將中斷向量的地址加載到PC;3、取出位于中斷向量地址處的分支轉(zhuǎn)移指令(分支轉(zhuǎn)移被延時(shí)時(shí),并且用戶也存儲(chǔ)了一個(gè)2字指令或兩個(gè)1字指令,則CPU也會(huì)獲取這兩個(gè)字);4、執(zhí)行分支轉(zhuǎn)移,轉(zhuǎn)到中斷服務(wù)程序(ISR)。(如果分支轉(zhuǎn)移被延時(shí),則在分支轉(zhuǎn)移之前會(huì)執(zhí)行額外的指令);5、執(zhí)行中斷服務(wù)程序直到遇到其中的返回指令;6、從堆棧中彈出返回地址到PC中(注意

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論