在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8547|回复: 14

IRQ中断

[复制链接]
发表于 2003-11-3 09:56:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
[这个贴子最后由dguang163在 2003/11/03 09:59am 第 1 次编辑]

各位帮忙看一下在44B0中执行中断程序就跑飞,进不到中断服务程序中,很是纳闷,以下是程序,请各位指教(我是用仿真器BDI1000调试,外部中断采用按键,) ;平时执行时正常按键按下程序就跑飞
void Test_Eint(void)
{
    unsigned int save_G,save_PG;
    int i;
/***Vectored interrupt test***/
    save_G=rPCONG;
    save_PG=rPUPG;
    rPCONG=0xffff;//EINT7~0
    rPUPG=0x0;//pull up enable
    pISR_EINT2=(int)Eint2Isr;
    rINTMOD=0x0;  // All=IRQ mode  
    rINTCON=0x1
    rINTMSK=~((0x1<<26)|(0x1<<23));
    Uart_Printf("ress the EINT buttons!!!\n");
    while(!which_int);   
    switch(which_int)
    {
case 1:
    Uart_Printf("EINT4 had been occured...\n");
    break;
case 2:
    Uart_Printf("EINT5 had been occured...\n");
   
    break;
case 4:
    Uart_Printf("EINT6 had been occured...\n");
    break;
case 8:
    Uart_Printf("EINT7 had been occured...\n");
    break;
case 9:
    Uart_Printf("EINT2 had been occured...\n");
    break;
case 0x0a:
    Uart_Printf("EINT0 had been occured...\n");
    break;
case 0x0b:
    Uart_Printf("EINT1 had been occured...\n");
    break;
case 0x0c:
    Uart_Printf("EINT3 had been occured...\n");
    break;
default :
    break;
    }
    rINTMSK=(0x1<<26);
    rPCONG=save_G;
    rPUPG=save_PG;
    which_int=0;
    rINTCON=0x5;
}
void __irq Eint2Isr(void)
{   
    rI_ISPC=(0x1<<23);//clear pending_bit
    which_int=9;
}
 楼主| 发表于 2003-11-3 10:07:33 | 显示全部楼层

IRQ中断

[这个贴子最后由dguang163在 2003/11/03 05:35pm 第 1 次编辑]

我的外部中断2向量的地址为0x20,pISR_EINT2=(*(unsigned *)0xc7fff7C),
HandleEINT2的地址也是0xc7fff7C;
编译环境为SDT2.5
linker设置为-ro-base 0xc000000 -rw-base 0xc5FF000 -first 44binit.o(Init)
发表于 2003-11-3 10:15:53 | 显示全部楼层

IRQ中断

你在中断里面把中断给关了,看一下中断是否会正常返回。
which_int会不会被优化掉了。我也在想。
 楼主| 发表于 2003-11-3 10:57:39 | 显示全部楼层

IRQ中断

谢谢版主liuiang ,我在中断处设断点都不会进去,没有进中断里面的命令根本就不会执行啊,我看了程序跑飞后的反汇编,pISR_EINT2指向的地址也对,中断从0X18处如口没办法跟踪,不知道会不会错,这种跑飞是不是中断地址映射不对造成的?
发表于 2003-11-3 15:02:18 | 显示全部楼层

IRQ中断

应该是中断入口的问题,因为肯定中断有效了,否则不会跑飞,
而没有执行应该执行的代码,所以我觉得是中断路由入口地址的问题。
发表于 2003-11-3 16:38:50 | 显示全部楼层

IRQ中断

有没有设置好 sp (IRQ模式)
发表于 2003-11-4 10:34:02 | 显示全部楼层

IRQ中断

sp 也设置了,用SDT250调试,先DEBUG一个.INI文件,它会不会影响啊?另外在0X18处指令应该是ldr pc,=HandlerEINT2 吧但我在0X0C000028总看到的不是这条指令所以跑飞,实在搞不定痛苦啊
发表于 2003-11-4 11:33:36 | 显示全部楼层

IRQ中断

pISR_EINT2 和 HandlerEINT2 有什么关系,把你的boot贴出来看看?HandlerEINT2 是不是处理中断分支,还是直接跳转?
 楼主| 发表于 2003-11-4 11:43:30 | 显示全部楼层

IRQ中断

[这个贴子最后由dguang163在 2003/11/07 01:30pm 第 1 次编辑]


 楼主| 发表于 2003-11-4 15:18:22 | 显示全部楼层

IRQ中断

利用仿真器在RAM中调试中断还有特殊要求吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-3-10 05:34 , Processed in 0.040379 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表