TMS320LF2407捕獲單元CAP實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模?/P>
1、掌握TMS320LF2407捕獲單元CAP的工作原理
2、掌握TMS320LF2407捕獲單元CAP程序設(shè)計(jì)
TMS320LF2407事件管理器共有6個(gè)捕獲單元,事件管理器A的捕獲單元有CAP1、CAP2、CAP3,事件管理器B的捕獲單元有CAP4、CAP5、CAP6,當(dāng)捕獲輸入引腳上檢測(cè)到所選的跳變時(shí),所選的GP定時(shí)器的計(jì)數(shù)值被捕獲并存入到一個(gè)2級(jí)深的FIFO堆棧中,下面的實(shí)驗(yàn)程序給出了對(duì)6個(gè)捕獲單元的測(cè)試,硬件部分將T1CMP連接到CAP1、CAP2,作為捕獲單元1、2的輸入,分別捕獲上升沿和下降沿。T2CMP至連接到CAP3,作為捕獲單元3輸入,捕獲上升下降沿。同樣,T3CMP連接到CAP4、CAP5,作為捕獲單元4、5的輸入,分別捕獲上升沿和下降沿。T4CMP至連接到CAP6,作為捕獲單元6輸入,捕獲上升下降沿。對(duì)EVA,正常情況下,在351H,352H,353H(DM)單元內(nèi)的值分別為5100,5200,5300,錯(cuò)誤代碼分別為5101H、5102H、5103H。對(duì)EVB,正常情況下,在361H,362H,363H(DM)單元內(nèi)的值分別為6100,6200,6300,錯(cuò)誤代碼分別為6101H、6102H、6103H。
;=====================================================
;File name :CAP TEST
;======================================================
;兩個(gè)定時(shí)器計(jì)數(shù)為連續(xù)上升(CONTINUOUS-UP)模式
; CAP1檢測(cè)上升沿(T1 CMP低有效)
; CAP2檢測(cè)下降沿(T1 CMP低有效)
; CAP3檢測(cè)上升下降沿(T2 CMP高有效)
;對(duì)事件管理器A(EVA)
;CAP1&CAP2 使用定時(shí)器1
;CAP3使用定時(shí)器2
;對(duì)事件管理器B(EVB)
;CAP4&CAP5 使用定時(shí)器3
;CAP6使用定時(shí)器4
;注意:連接T1CMP至CAP1,2;T2CMP至CAP3輸入
;連接T3CMP至CAP4,5;T4CMP至CAP6輸入
;外設(shè)代碼:5(EVA)和6(EVB)
;測(cè)試代碼:CAP1,2,3,4,5,6-1,2,3,1,2,3(分別對(duì)應(yīng))
.title "EV capture test"
.include "F2407REGS.H "
.include "vectors.h"
.def _c_int0
DEL .set 0fffh
.text
_c_int0: LDP #0H
SETC INTM ;關(guān)中斷
SPLK #000H,IMR
LACC IFR ;讀中斷標(biāo)志
SACL IFR ;清所有中斷標(biāo)志
LDP #WDKEY>>7H
SPLK 006FH,WDCR ;關(guān)看門(mén)狗
LDP #SCSR1>>7
SPLK #00CH,SCSR1 ;開(kāi)EVA&EVB時(shí)鐘
LDP #EVAIMRA>>7
SPLK #0FFFFH,EVAIFRA ;清所有EVA中斷標(biāo)志
SPLK #0FFFFH,EVAIFRB
SPLK #0FFFFH,EVAIFRC
LDP #EVBIMRA>>7
SPLK #0FFFFH,EVBIFRA ;清所有EVB中斷標(biāo)志
SPLK #0FFFFH,EVBIFRB
SPLK #0FFFFH,EVBIFRC
LAR AR7,#DEL ;裝載延時(shí)值
MAR *,AR7 ;設(shè)當(dāng)前ARP指針
LDP #0E1H
SPLK #1111111111111111b,MCRA ;開(kāi)所有EV信號(hào)
SPLK #1111111111111111b,MCRC
;===========================================;EVA Capture test
;外設(shè)代碼:5,測(cè)試代碼:1,2,3,正常情況下,在351H,352H,353H(DM)單元
;內(nèi)的值分別為5100,5200,5300
;錯(cuò)誤代碼:CAP1-5101H, CAP2-5102H, CAP3-5103H
;========================================
LDP #GPTCONA>>7H
SPLK #0000000001001001B,GPTCONA
;0000 0000 0
;1-使能比較輸出
;00-保留
;10-T2CMP高有效
;01-T1CMP低有效
SPLK #0000000000000000B,T1CNT;設(shè)置計(jì)數(shù)寄存器
SPLK #0000000000000000B,T2CNT
SPLK #0001011101000010B,T1CON
;000 10 -連續(xù)增計(jì)數(shù)模式
;111 -預(yù)分頻為128
;1 -定時(shí)器1計(jì)數(shù)使能
;00- 內(nèi)部時(shí)鐘
;00- 當(dāng)計(jì)數(shù)值是0時(shí)重裝
;1-使能定時(shí)器比較
;0-使用自身的周期寄存器
SPLK #0001011111000011B,T2CON
;TSWT1=1:使用定時(shí)器1使能位
;SELT1PR=1:使用定時(shí)器1周期寄存器
SPLK #1111111111111111B,T1PR
SPLK #0011111100000000B,T1CMPR
SPLK #0011111100000000B,T2CMPR
SPLK #0000000000000000B,EVAIMRA ;關(guān)A、B中斷
SPLK #0000000000000000B,EVAIMRB
;裝載捕獲寄存器
SPLK #0011001001101100B,CAPCONA
;0- 清捕獲寄存器
;01- 使能捕獲單元1和2
;1- 使能捕獲單元3
;0- 保留
;0-選擇定時(shí)器2(CAP3)
;1-選擇定時(shí)器1(CAP1、2)
;0-無(wú)操作
;01-檢測(cè)上升沿(CAP1)
;10-檢測(cè)下降沿(CAP2)
;11-檢測(cè)兩個(gè)邊沿(CAP3)
;00-保留
SPLK #0000000000000111B,EVAIMRC
;0000 0000 0000 0
;111-使能捕獲單元CAP1、CAP2、CAP3中斷
LDP #6H ;寫(xiě)錯(cuò)誤碼
SPLK #5101H,51H ;如測(cè)試通過(guò)錯(cuò)誤碼將被覆蓋
SPLK #5201H,52H
SPLK #5301H,53H
LDP #0H
SPLK #0000000000001000B,IMR ;使能中斷4
CLRC INTM ;開(kāi)中斷
CALL CAPDLY
;===========================================
;EVB Capture test
;外設(shè)代碼:6,測(cè)試代碼:1,2,3,正常情況下,在361H,362H,363H(DM)單元
;內(nèi)的值分別為;100,6200,6300
;錯(cuò)誤代碼:CAP1-6101H, CAP2-6102H, CAP3-6103H
;==========================================
SETC INTM
LDP #GPTCONB>>7H
SPLK #0000000001001001B,GPTCONB
;0000 0000 0
;1-使能比較輸出
;00-保留
;10-T2CMP高有效
;01-T1CMP低有效
SPLK #0000000000000000B,T3CNT;設(shè)置計(jì)數(shù)寄存器
SPLK #0000000000000000B,T4CNT
SPLK #0001011101000010B,T3CON
;000 10 -連續(xù)增計(jì)數(shù)模式
;111 -預(yù)分頻為128
;1 -定時(shí)器3計(jì)數(shù)使能
;00- 內(nèi)部時(shí)鐘
;00- 當(dāng)計(jì)數(shù)值是0時(shí)重裝
;1-使能定時(shí)器比較
;0-使用自身的周期寄存器
SPLK #0001011111000011B,T4CON
;TSWT3=1:使用定時(shí)器3使能位
;SELT3PR=1:使用定時(shí)器3周期寄存器
SPLK #1111111111111111B,T3PR
SPLK #0011111100000000B,T3CMPR
SPLK #0011111100000000B,T4CMPR
SPLK #0000000000000000B,EVBIMRA ;關(guān)A、B中斷
SPLK #0000000000000000B,EVBIMRB
SPLK #0011001001101100B,CAPCONB
;0- 清捕獲寄存器
;01- 使能捕獲單元4和5
;1- 使能捕獲單元6
;0- 保留
;0-選擇定時(shí)器4(CAP6)
;1-選擇定時(shí)器3(CAP4、5)
;0-無(wú)操作
;01-檢測(cè)上升沿(CAP4)
;10-檢測(cè)下降沿(CAP5)
;11-檢測(cè)兩個(gè)邊沿(CAP6)
;00-保留
SPLK #0000000000000111B,EVBIMRC
;0000 0000 0000 0
;111-使能捕獲單元CAP4、CAP5、CAP6中斷
LDP #6H ;寫(xiě)錯(cuò)誤碼
SPLK #6101H,61H ;如測(cè)試通過(guò)錯(cuò)誤碼將被覆蓋
SPLK #6201H,62H
SPLK #6301H,63H
CLRC INTM ;開(kāi)中斷
CALL CAPDLY
;===================================
;退出測(cè)試程序
;======================================
LDP #0h
SPLK #0H,IMR ;關(guān)中斷
LACC IFR ;讀中斷標(biāo)志
SACL IFR ;清所有中斷標(biāo)志
SETC INTM
LDP #EVAIMRA>>7
SPLK #0H,EVAIMRA ;禁止所有EVA中斷
SPLK #0H,EVAIMRB
SPLK #0H,EVAIMRC
SPLK #0FFFFH,EVAIFRA ;清所有EVA中斷標(biāo)志
SPLK #0FFFFH,EVAIFRB
SPLK #0FFFFH,EVAIFRC
LDP #EVBIMRA>>7
SPLK #0H,EVBIMRA ;禁止所有EVB中斷
SPLK #0H,EVBIMRB
SPLK #0H,EVBIMRC
SPLK #0FFFFH,EVBIFRA ;清所有EVB中斷標(biāo)志
SPLK #0FFFFH,EVBIFRB
SPLK #0FFFFH,EVBIFRC
LDP #SCSR1>>7
SPLK #0000H,SCSR1 ;關(guān)EVA&EVB時(shí)鐘
LDP #GPTCONA>>7
SPLK #0H,T1CON
SPLK #0H,T2CON
LDP #GPTCONB>>7
SPLK #0H,T3CON
SPLK #0H,T4CON
DONE: B DONE ;測(cè)試結(jié)束
;====================================
;中斷服務(wù)子程序
;==========================================
GISR4: ;INT4 中斷服務(wù)子程序
NOP
LACL PIVR ;裝載中斷向量值
XOR #033H
BCND SISR33,EQ ;CAP1中斷
LACL PIVR
XOR #034H
BCND SISR34,EQ ;CAP2中斷
LACL PIVR
XOR #035H
BCND SISR35,EQ ;CAP3中斷
LACL PIVR
XOR #036H
BCND SISR36,EQ ;CAP4中斷
LACL PIVR
XOR #037H
BCND SISR37,EQ ;CAP5中斷
LACL PIVR
XOR #038H
BCND SISR38,EQ ;CAP6中斷
RET
SISR33: ;CAP1 SISR
LDP #GPTCONA>>7H
SPLK #01H,EVAIFRC ;清CAP1中斷標(biāo)志
LDP #0H
BLDD #CAP1FIFO,70H
BLDD #CAP1FIFO,71H
LACL 70H ;檢查FIFO的值
XOR #0H
BCND CAP1FAIL,NEQ
LACL 71H
XOR #0H
BCND CAP1PASS,EQ
CAP1FAIL: ;CAP1錯(cuò)誤報(bào)告
LDP #6H
SPLK #5101H,51H
B END_INT
CAP1PASS:
LDP #6H
SPLK #5100H,51H
END_INT: CLRC INTM
RET
SISR34: ;CAP2 SISR
LDP #GPTCONA>>7H
SPLK #02H,EVAIFRC ;清CAP2中斷標(biāo)志
LDP #0H
BLDD #CAP2FIFO,72H
BLDD #CAP2FIFO,73H
LACL 72H ;檢查FIFO的值
XOR #3F00H
BCND CAP2FAIL,NEQ
LACL 73H
XOR #3F00H
BCND CAP2PASS,EQ
CAP2FAIL: ;CAP2錯(cuò)誤報(bào)告
LDP #6H
SPLK #5201H,52H
B END_INT
CAP2PASS:
LDP #6H
SPLK #5200H,52H
CLRC INTM
RET
SISR35: ;CAP3 SISR
LDP #GPTCONA>>7H
SPLK #04H,EVAIFRC ;清CAP3中斷標(biāo)志
LDP #0H
BLDD #CAP3FIFO,74H
BLDD #CAP3FIFO,75H
LACL 74H ;檢查FIFO的值
XOR #0H
BCND CAP3FAIL,NEQ
LACL 75H
XOR #3F00H
BCND CAP3PASS,EQ
CAP3FAIL: ;CAP3錯(cuò)誤報(bào)告
LDP #6H
SPLK #5301H,53H
B END_INT
CAP3PASS:
LDP #6H
SPLK #5300H,53H
CLRC INTM
RET
SISR36: ;CAP4 SISR
LDP #GPTCONB>>7H
SPLK #01H,EVBIFRC ;清CAP4中斷標(biāo)志
LDP #0H
BLDD #CAP4FIFO,76H
BLDD #CAP4FIFO,77H
LACL 76H ;檢查FIFO的值
XOR #0H
BCND CAP4FAIL,NEQ
LACL 77H
XOR #0H
BCND CAP4PASS,EQ
CAP4FAIL: ;CAP4錯(cuò)誤報(bào)告
LDP #6H
SPLK #6101H,61H
B END_INT
CAP4PASS:
LDP #6H
SPLK #6100H,61H
CLRC INTM
RET
SISR37: ;CAP5 SISR
LDP #GPTCONB>>7H
SPLK #02H,EVBIFRC ;清CAP5中斷標(biāo)志
LDP #0H
BLDD #CAP5FIFO,78H
BLDD #CAP5FIFO,79H
LACL 78H ;檢查FIFO的值
XOR #3F00H
BCND CAP5FAIL,NEQ
LACL 79H
XOR #3F00H
BCND CAP5PASS,EQ
CAP5FAIL: ;CAP5錯(cuò)誤報(bào)告
LDP #6H
SPLK #6201H,62H
B END_INT
CAP5PASS:
LDP #6H
SPLK #6200H,62H
CLRC INTM
RET
SISR38: ;CAP6 SISR
LDP #GPTCONB>>7H
SPLK #04H,EVBIFRC ;清CAP6中斷標(biāo)志
LDP #0H
BLDD #CAP6FIFO,7AH
BLDD #CAP6FIFO,7BH
LACL 7AH ;檢查FIFO的值
XOR #0H
BCND CAP6FAIL,NEQ
LACL 7BH
XOR #3F00H
BCND CAP6PASS,EQ
CAP6FAIL: ;CAP6錯(cuò)誤報(bào)告
LDP #6H
SPLK #6301H,63H
B END_INT
CAP6PASS:
LDP #6H
SPLK #6300H,63H
CLRC INTM
RET
;====================================
;延時(shí)子程序
;==========================================
CAPDLY:
MAR *,AR0
LAR AR0,#0FFFFH
CAPDLP2:
RPT #0FFH
NOP
BANZ CAPDLP2
RET
PHANTOM: RET
.end
實(shí)驗(yàn)步驟:
1、 硬件部分將T1CMP連接到CAP1、CAP2,作為捕獲單元1、2的輸入,T2CMP至連接到CAP3,作為捕獲單元3輸入。同樣,T3CMP連接到CAP4、CAP5,作為捕獲單元4、5的輸入,T4CMP至連接到CAP6,作為捕獲單元6輸入。
2、 將生成的*.OUT文件裝載到CC,分別在GISR4及SISR33、SISR34、SISR35、SISR36、SISR37、SISR38中斷服務(wù)子程序中設(shè)置斷點(diǎn),可改變比較寄存器的值,觀察FIFO的變化。
評(píng)論