DSP 的定時(shí)器和外中斷實(shí)驗(yàn)報(bào)告_第1頁
DSP 的定時(shí)器和外中斷實(shí)驗(yàn)報(bào)告_第2頁
DSP 的定時(shí)器和外中斷實(shí)驗(yàn)報(bào)告_第3頁
DSP 的定時(shí)器和外中斷實(shí)驗(yàn)報(bào)告_第4頁
DSP 的定時(shí)器和外中斷實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)三:dsp 的定時(shí)器和外中斷定時(shí)器:一實(shí)驗(yàn)?zāi)康?通過實(shí)驗(yàn)熟悉vc5509a 的定時(shí)器;2掌握vc5509a 定時(shí)器的控制方法;3掌握vc5509a 的中斷結(jié)構(gòu)和對中斷的處理流程;4學(xué)會c 語言中斷程序設(shè)計(jì),以及運(yùn)用中斷程序控制程序流程。二實(shí)驗(yàn)設(shè)備計(jì)算機(jī),icetek-vc5509-a 實(shí)驗(yàn)箱(或icetek 仿真器+icetekvc5509-a 系統(tǒng)板+相關(guān)連線及電源)。三實(shí)驗(yàn)原理1通用定時(shí)器介紹及其控制方法(詳見spru595b.pdf):tms320vc5509a 內(nèi)部有兩個(gè)20 位通用定時(shí)器(gp):* 每個(gè)通用定時(shí)器包括:- 一個(gè)16 位的減計(jì)數(shù)的計(jì)數(shù)器tim;- 一個(gè)16 位的定

2、時(shí)器周期寄存器prd;- 一個(gè)16 位的定時(shí)器控制寄存器tcr;- 一個(gè)16 位的定時(shí)器預(yù)定標(biāo)寄存器pscr;* pscr 寄存器說明:15 10 9 6 5 4 3 0reserved psc reserved tddrpsc: 4 位的預(yù)定標(biāo)值,與tim 共同組成20 位的定時(shí)計(jì)數(shù)器.tddr: 預(yù)定標(biāo)周期寄存器(在需要時(shí)重裝入psc 的值)tcr 寄存器說明(詳見spru595b.pdf)2中斷響應(yīng)過程(詳見spru595b.pdf):外設(shè)事件要引起cpu 中斷,必須保證:ier 中相應(yīng)使能位被使能,ifr 相應(yīng)中斷也被使能。在軟件中,當(dāng)設(shè)置好相應(yīng)中斷標(biāo)志后,開中斷,進(jìn)入等待中斷發(fā)生的狀

3、態(tài);外設(shè)(如定時(shí)器)中斷發(fā)生時(shí),首先跳轉(zhuǎn)到相應(yīng)中斷高級的服務(wù)程序中(如:定時(shí)器1 會引起tint中斷),程序在進(jìn)行服務(wù)操作之后,應(yīng)將本外設(shè)的中斷標(biāo)志位清除以便能繼續(xù)中斷,然后返回。3中斷程序設(shè)計(jì):- 程序中應(yīng)包含中斷向量表,vc5509a 默認(rèn)向量表從程序區(qū)0 地址開始存放,根據(jù)ipvd 和ipvh 的值確定向量表的實(shí)際地址。- 注意觀察程序中intr_init()函數(shù)的定義部分,其中ipvd 和ipvh 的值都為0x0d0;同時(shí)觀察配置文件icetekvc5509-ae.cmd 中的vect 段描述中o=0x0d000。- 向量表中每項(xiàng)為8 個(gè)字,存放一個(gè)跳轉(zhuǎn)指令,跳轉(zhuǎn)指令中的地址為相應(yīng)服務(wù)

4、程序入口地址。第一個(gè)向量表的首項(xiàng)為復(fù)位向量,即cpu 復(fù)位操作完成后自動(dòng)進(jìn)入執(zhí)行的程序入口。- 服務(wù)程序在服務(wù)操作完成后,清除相應(yīng)中斷標(biāo)志,返回,完成一次中斷服務(wù)5實(shí)驗(yàn)程序分析:本實(shí)驗(yàn)設(shè)計(jì)的程序是在上實(shí)驗(yàn)3.1 基礎(chǔ)上修改得來,由于實(shí)驗(yàn)3.1 控制指示燈閃爍的延時(shí)控制是用循環(huán)計(jì)算方法得到的,延時(shí)不精確也不均勻,采用中斷方式可以實(shí)現(xiàn)指示燈的定時(shí)閃爍,時(shí)間更加準(zhǔn)確。實(shí)驗(yàn)程序的工程中包含了兩種源代碼,主程序采用c 語言編制利于控制,中斷向量表在vector.asm 匯編語言文件中,利于直觀地控制存儲區(qū)分配。在工程中只需將它們添加進(jìn)來即可,編譯系統(tǒng)會自動(dòng)識別分別處理完成整合工作。實(shí)驗(yàn)程序的c 語言主程

5、序中包含了內(nèi)嵌匯編語句,提供一種在需要更直接控制dsp 狀態(tài)時(shí)的方法,同樣的方法也能提高c 語言部分程序的計(jì)算效率四實(shí)驗(yàn)步驟1實(shí)驗(yàn)準(zhǔn)備:連接實(shí)驗(yàn)設(shè)備:請參看本書第三部分、第一章、二。關(guān)閉實(shí)驗(yàn)箱上擴(kuò)展模塊和信號源電源開關(guān)。2設(shè)置code composer studio 3.1 在硬件仿真(emulator)方式下運(yùn)行:請參看本書第三部分、第一章、四、2。3啟動(dòng)code composer studio 3.1:請參看本書第三部分、第一章、五、2。選擇菜單debugreset cpu。4打開工程文件:打開菜單“project”的“open”項(xiàng);選擇c:icetekvc5509aevc5509aela

6、b0303-timer目錄中的“timer.pjt”。在項(xiàng)目瀏覽器中,雙擊main.c,激活main.c 文件,瀏覽該文件的內(nèi)容,理解各語句作用。打開icetekvc5509-ae.cmd,對照vector.asm 源程序?qū)W習(xí)中斷向量表的寫法。5編譯、下載程序。6運(yùn)行程序,觀察結(jié)果。7改變timer_init()函數(shù)里*prd0 = 0x0ffff 為 “=0x0fff ”;重復(fù)步驟5,6 觀察實(shí)驗(yàn)現(xiàn)象。五實(shí)驗(yàn)代碼#include myapp.h/ 定義指示燈寄存器地址和寄存器類型#define lbds (*(unsigned int *)0x400001)void intr_init( v

7、oid );void timer_init(void);int ncount;main()ncount=0;pll_init(40);sdram_init();lbds=0;intr_init();timer_init();while ( 1 )void interrupt timer()ncount+; ncount%=16;if ( ncount=0 )lbds=1;void intr_init( void )ivpd=0xd0;ivph=0xd0;ier0=0x10;dbier0 =0x10;ifr0=0xffff;asm( bclr intm);void timer_init(void

8、) ioport unsigned int *tim0; ioport unsigned int *prd0; ioport unsigned int *tcr0; ioport unsigned int *prsc0; tim0 = (unsigned int *)0x1000;prd0 = (unsigned int *)0x1001;tcr0 = (unsigned int *)0x1002;prsc0 = (unsigned int *)0x1003; *tcr0 = 0x04f0; *tim0 = 0; *prd0 = 0x0ffff; *prsc0 = 2; *tcr0 = 0x0

9、0e0;六實(shí)驗(yàn)結(jié)果- 指示燈在定時(shí)器的定時(shí)中斷中按照設(shè)計(jì)定時(shí)閃爍。- 使用定時(shí)器和中斷服務(wù)程序可以完成許多需要定時(shí)完成的任務(wù),比如dsp 定時(shí)啟動(dòng)a/d 轉(zhuǎn)換,日常生活中的計(jì)時(shí)器計(jì)數(shù)、空調(diào)的定時(shí)啟動(dòng)和關(guān)閉等。- 在調(diào)試程序時(shí),有時(shí)需要指示程序工作的狀態(tài),可以利用指示燈的閃爍來達(dá)到,指示燈靈活的閃爍方式可表達(dá)多種狀態(tài)信息。外部中斷:一實(shí)驗(yàn)?zāi)康?通過實(shí)驗(yàn)熟悉vc5509a 的中斷響應(yīng)過程。2學(xué)會c 語言中斷程序設(shè)計(jì),以及運(yùn)用中斷程序控制程序流程。二實(shí)驗(yàn)設(shè)備計(jì)算機(jī),icetek-vc5509-a 實(shí)驗(yàn)箱(或icetek 仿真器+icetekvc5509-a 系統(tǒng)板+相關(guān)連線及電源)。三實(shí)驗(yàn)原理1中斷

10、及中斷處理過程:中斷簡介:中斷是一種由硬件或軟件驅(qū)動(dòng)的信號,dsp 在接到此信號時(shí),將當(dāng)前程序懸掛起來,轉(zhuǎn)去執(zhí)行另外一個(gè)任務(wù),這個(gè)任務(wù)我們稱為中斷服務(wù)程序(isr)。tms320c55(c55x) dsp可支持32 個(gè)isr,可由硬件或軟件觸發(fā)。所有的c55x 中斷,可以分成可屏蔽中斷和不可屏蔽中斷兩種,軟件中斷是不可屏蔽的。dsp 處理中斷的步驟:接收中斷請求。請求由軟件或硬件發(fā)出。響應(yīng)中斷請求。對于可屏蔽中斷,需要滿足若干條件,才發(fā)生響應(yīng);而對于不可屏蔽中斷,則立即響應(yīng)。準(zhǔn)備執(zhí)行中斷服務(wù)程序。- 完成當(dāng)前正在執(zhí)行的指令;將進(jìn)入流水線但還未解碼的指令清除。- 自動(dòng)保存若干寄存器的值到數(shù)據(jù)堆棧

11、和系統(tǒng)堆棧。- 取得用戶定義的中斷向量表中當(dāng)前中斷向量,中斷向量指向中斷服務(wù)程序入口。執(zhí)行中斷服務(wù)程序。中斷服務(wù)程序包含中斷返回指令,這樣返回時(shí)可以出棧以前保存的關(guān)鍵寄存器數(shù)據(jù),從而恢復(fù)中斷服務(wù)程序執(zhí)行前的現(xiàn)場。中斷向量表:中斷向量表的構(gòu)成請參見ti 的文檔sprs295d.pdf 之3.11。中斷向量表的地址可以由用戶指定。外中斷:tms320c5509 可以響應(yīng)int0-int4 五個(gè)外中斷。2icetek-ctr 板的鍵盤接口:顯示/控制模塊icetek-ctr 通過接口p8 連接小鍵盤,接收小鍵盤傳送的掃描碼,并在每個(gè)掃描碼結(jié)束后保存,同時(shí)向dsp 的int2 發(fā)送中斷信號;當(dāng)dsp

12、讀鍵盤時(shí)將掃描碼送到數(shù)據(jù)總線上。小鍵盤上每次按下一個(gè)鍵將產(chǎn)生2 個(gè)掃描碼、2 次中斷。3程序編制:由一個(gè)不含中斷處理程序的工程通過改寫加入中斷處理程序部分大致需要如下操作(假設(shè)使用int2): 編制中斷服務(wù)程序:可以用c 語言程序?qū)崿F(xiàn)(參見實(shí)驗(yàn)程序),編寫單獨(dú)的一個(gè)函數(shù)xint,此函數(shù)使用interrupt 修飾,沒有參數(shù)和返回值。 構(gòu)造中斷向量表:可以用匯編語言構(gòu)造,編寫一個(gè)匯編語言模塊程序vector.asm,在程序頭上聲明段名為“.vectors”;定義外部標(biāo)號_xint,由于匯編語言要使用c 語言程序中定義的標(biāo)號xint,需要在這個(gè)標(biāo)號前加底線;在中斷向量表該中斷對應(yīng)位置(int2)寫

13、匯編語言語句跳轉(zhuǎn)語句。 修改連接命令文件:在memory 小節(jié)中開辟單獨(dú)的地址段用以存放中斷向量表;在sections 小節(jié)中指定.vectors 段到前步開設(shè)的內(nèi)存段中。 主程序中進(jìn)行初始化設(shè)置:定位中斷向量表,使能中斷,清中斷等。四實(shí)驗(yàn)步驟1實(shí)驗(yàn)準(zhǔn)備: 連接實(shí)驗(yàn)設(shè)備:請參看本書第三部分、第一章、二。 連接實(shí)驗(yàn)箱附帶的鍵盤的ps2 插頭到icetek-ctr 的“鍵盤接口”p8。 將icetek-ctr 板的供電電源開關(guān)撥動(dòng)到“開”的位置。開關(guān)位置請參見第二部分、第一章、三、“擴(kuò)展模塊電源開關(guān)及其指示燈”。2設(shè)置code composer studio 3.1 在硬件仿真(emulator)

14、方式下運(yùn)行:請參看本書第三部分、第一章、四、2。3啟動(dòng)code composer studio 3.1:請參看本書第三部分、第一章、五、2:選擇菜單debugreset cpu。4打開工程文件:工程目錄:c:icetekvc5509aes60vc5509aelab0304-xintv60xint.pjt。瀏覽main.c 文件的內(nèi)容,理解各語句作用。打開icetekvc5509-ae.cmd,對照vector.asm 源程序?qū)W習(xí)中斷向量表的寫法。5編譯、下載程序。6運(yùn)行程序,觀察結(jié)果:運(yùn)行程序,按一下小鍵盤上任意一個(gè)鍵,注意觀察icetek-ctr 板上指示燈閃爍的情況。7觀察中斷函數(shù)的執(zhí)行:

15、選擇“debug”菜單中“halt”暫停運(yùn)行程序,在xint 程序中的語句上加軟件斷點(diǎn),重新運(yùn)行程序(選擇“debug”菜單中“run”),觀察何時(shí)程序停留在斷點(diǎn)上。五實(shí)驗(yàn)代碼#include myapp.h#include icetek-vc5509-edu.h#include scancode.hvoid initmcbsp();void intr_init( void );void time_init(void);int ncount;main()ncount=0;ncount=*(int *)0x10000;asm( nop );pll_init(20);sdram_init();intr_init();initmcbsp();initctr();ctrlr=0xc8;/ 使能io/ctrclkey=0;while ( 1 )void initmcbsp()/ iopin: mcbsp1.fsx s15 /spcr2.xrst_=0,pcr.xioen=1,pcr.fsxm=1,pcr.fsxp=0/1spcr2_1&=0x0f

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論