DSP 的定時器和外中斷實驗報告_第1頁
DSP 的定時器和外中斷實驗報告_第2頁
DSP 的定時器和外中斷實驗報告_第3頁
DSP 的定時器和外中斷實驗報告_第4頁
DSP 的定時器和外中斷實驗報告_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2、時器周期寄存器prd;- 一個16 位的定時器控制寄存器tcr;- 一個16 位的定時器預(yù)定標(biāo)寄存器pscr;* pscr 寄存器說明:15 10 9 6 5 4 3 0reserved psc reserved tddrpsc: 4 位的預(yù)定標(biāo)值,與tim 共同組成20 位的定時計數(shù)器.tddr: 預(yù)定標(biāo)周期寄存器(在需要時重裝入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è)(如定時器)中斷發(fā)生時,首先跳轉(zhuǎn)到相應(yīng)中斷高級的服務(wù)程序中(如:定時器1 會引起tint中斷),程序在進(jìn)行服務(wù)操作之后,應(yīng)將本外設(shè)的中斷標(biāo)志位清除以便能繼續(xù)中斷,然后返回。3中斷程序設(shè)計:- 程序中應(yīng)包含中斷向量表,vc5509a 默認(rèn)向量表從程序區(qū)0 地址開始存放,根據(jù)ipvd 和ipvh 的值確定向量表的實際地址。- 注意觀察程序中intr_init()函數(shù)的定義部分,其中ipvd 和ipvh 的值都為0x0d0;同時觀察配置文件icetekvc5509-ae.cmd 中的vect 段描述中o=0x0d000。- 向量表中每項為8 個字,存放一個跳轉(zhuǎn)指令,跳轉(zhuǎn)指令中的地址為相應(yīng)服務(wù)

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

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

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

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

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

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

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

14、方式下運(yùn)行:請參看本書第三部分、第一章、四、2。3啟動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)行程序,按一下小鍵盤上任意一個鍵,注意觀察icetek-ctr 板上指示燈閃爍的情況。7觀察中斷函數(shù)的執(zhí)行:

15、選擇“debug”菜單中“halt”暫停運(yùn)行程序,在xint 程序中的語句上加軟件斷點,重新運(yùn)行程序(選擇“debug”菜單中“run”),觀察何時程序停留在斷點上。五實驗代碼#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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論