huttu
驱动大牛
驱动大牛
  • 注册日期2002-11-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望25点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
阅读:1836回复:9

DSP快救我呀!以系统原理图相谢!

楼主#
更多 发布于:2003-05-12 21:45
我用TI的240,现在系统做死的不进中断!
单步执行时,7401(T1CNT)的值是变化,就是7432(EVIVRA)值始终为0
高手帮帮我呀!!
本人愿以系统原理图相谢!!!
lbcat
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2007-09-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-12 21:54
   你用的是时钟中断吧??可能是某些寄存器没有设置好,要不就
是中断向量表没有写好,看看ccs的帮助文档,应该比较详细的了。
   :D
huttu
驱动大牛
驱动大牛
  • 注册日期2002-11-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望25点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-12 22:30
我用T1中断,如果说寄存器没有设置好,我反汇编一个成功的C程序也是一样的
如果说向量表没有建好,我是如下建的:
            .sect     \".vectors\"
REVECT      B        START
INT1        B        PHANTOM
INT2        B        GISR2
INT3        B        PHANTOM
INT4 B        PHANTOM
INT5        B        PHANTOM
INT6        B        PHANTOM
.space   24*2*16
SW_INT31    B        PHANTOM

GISR2:      SST     #1,ST1_CON
            SST     #0,ST0_CON
            LACL     EVIFRA
SUB      #280H
BCND     T1PR_ISR
T1PR_ISR是定时器中断服务程序。

在此先谢了!
lbcat
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2007-09-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-13 21:27
   那就检查一下:
  1、T1的控制寄存器中的“允许中断”位有没有打开。
  2、IMR中有没有把INT2中断UNMASK掉。
  3、有没有把系统的总中断打开。
  如果都不是上述原因的话,我想也可能是地址分配不当造成的,
我试过cmd分配不当会导致出现中断混乱的情况(可能会跳进你的
PHANTOM中断陷阱中出不来)。这要看看你调试的现象了…… :P
huttu
驱动大牛
驱动大牛
  • 注册日期2002-11-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望25点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-14 22:56
对定时器有关的定义我是这样定义的:
SPLK     #9740H,T1CON
SPLK     #6aH,GPTCON
再者,我按照一个成功的C语言反汇编过来,C语言可以中断
IMR我赋了0002值,总中断也开了,如果是地址分配出错造成的,会是那些地址出错了呢?
初始化程序如下:帮忙看一下,谢谢啦!
START       CLRC     XF
CLRC     CNF
CLRC     OVM
CLRC     SXM
SETC     INTM
LDP      #0E0H  
SPLK     #7H,RTICR
   SPLK     #2FH,WDCR
   KICK_DOG        
   LDP      #0E0H
   SPLK     #6FH,WDCR
   LDP      #0
   SPLK     #500,mSEC
   LDP      #1FFH
   SPLK     #0FH,WSGR
   LDP      #0E0H
   SPLK     #40C0H,SYSCR
   LDP      #0
   SPLK     #1CH,04H
   LDP      #0E0H
   LACL     SYSSR
   AND      #69FFH
   SACL     SYSSR    
   SPLK     #0BBH,CKCR1
   SPLK     #3H,CKCR0
   SPLK     #4H,NMI  
   LDP      #0
   SPLK     #2,IMR
   SPLK      #0FFFFH,IFR
   LDP      #0E0H
   SPLK     #0FFFFH,EVIFRA
   SPLK     #80H,EVIMRA
   CLRC     INTM
   SPLK     #1FH,CMPR1
   SPLK     #2FH,CMPR2
   SPLK     #3FH,CMPR3
   SPLK     #5000,T1PR
   SPLK     #0,T1CNT
   SPLK     #9740H,T1CON
   SPLK     #6aH,GPTCON

lbcat
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2007-09-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-15 14:15
    既然有成功的c语言干嘛还要用汇编呢?
    其实也没道理啊,ccs本身也要把c变成汇编再连接的,要不是你的反汇编软件有问题(你把ccs设置一下,看它编译出来的asm和这个一不一样)?其实你可以用最简系统来分析(有些跟T1中断无关的寄存器可以先不操作),另外不知你没中断的判据是什么,是在中断程序中设断点没反应,还是只是EVIVRA为0?
    最终还是要靠你自己一步一步跟踪调试来排错了……
     :P :P
lbcat
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2007-09-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-15 16:11
   还有把看门狗关掉试试,CLRC INTM还是放在最后好一点,虽然不一定有影响 。;)
huttu
驱动大牛
驱动大牛
  • 注册日期2002-11-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望25点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-16 17:58
谢谢lbcat,问题解决了。
比较有意思的是解决问题是在我状态最差、又最不想搞的时候搞好的。
前天搞了个通霄打论文,本来早上想回去睡觉,结果在路上碰了导师。好了,睡觉是不可能了就调程序。结果修改了几条语句,单步运行,发现7432H的值变为0027H,那一刻我真是兴奋呀! :D :D

本来要把分全放了,结果没弄好,下次再加满啦!
lbcat
驱动牛犊
驱动牛犊
  • 注册日期2002-03-19
  • 最后登录2007-09-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-16 22:07
   哈哈哈哈~~~,恭喜恭喜!
   我也是经常在以为最没戏的时候突然解决问题的,真是柳暗花明又一村啊,上次我不小心在写flash的时候把2407a加了密,以为又要报废一颗芯片了(还要是借人家的来用的,自己已经烧了两片了……~~>_<~~),正当我惋惜不已的时候居然给我找回密码了,哈哈哈~~,看来是命不该绝啊~~!! :D :D :D
huttu
驱动大牛
驱动大牛
  • 注册日期2002-11-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望25点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-05-18 16:30
我差不多兴奋了一个上午。
最主要的是给自己很大的信心了。
游客

返回顶部