打印

DSP芯片f2812中断子程序关闭中断使能问题

[复制链接]
1200|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kutu佐夫|  楼主 | 2014-9-2 14:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    前提:禁止非屏蔽中断NMI。
    上位机下发指令后,中断使能置1,使用芯片引脚外触发中断子程序(如下),完成program后,关闭本中断使能IER  = IER&0xEFFF(中断13),标志寄存器清零 IFR  = 0x0000。单步执行出中断子程序,使能恢复为1,这是为什么?此时再来外触发,中断依然响应,而我的目的是完成中断子程序后使能关闭,需要再次上位机下发指令,才能使用外触发中断程序。
interrupt void INT13_ISR(void)
{
    IER  = IER&0xEFFF;
    IFR  = 0x0000;
    /*program*/
    IER  = IER&0xEFFF;
    IFR  = 0x0000;
}
请问这是DSP芯片自身设置程这样?可以按照我的意愿完成吗?
另外,进入中断子程序,中断使能自动复位吗?

相关帖子

沙发
wangdezhi| | 2014-9-2 20:58 | 只看该作者
中断清零

使用特权

评论回复
板凳
wangdezhi| | 2014-9-2 20:58 | 只看该作者
这样不可以么

使用特权

评论回复
地板
wangdezhi| | 2014-9-2 21:24 | 只看该作者

使用特权

评论回复
5
zhangmangui| | 2014-9-2 22:13 | 只看该作者
应该是可以的     你的大体意思就是通过上位机的指令控制终端使能与否是吧
这个肯定是可行的   

使用特权

评论回复
6
kutu佐夫|  楼主 | 2014-9-3 08:53 | 只看该作者
wangdezhi 发表于 2014-9-2 21:24

在子程序里,中断使能和标志位是可以清零的。但是出了子程序,int13中断使能位又复位1了,现在不知道这个动作是谁赋予的。(出子程序,标志位保持0,这个是正确的)

使用特权

评论回复
7
kutu佐夫|  楼主 | 2014-9-3 09:11 | 只看该作者
zhangmangui 发表于 2014-9-2 22:13
应该是可以的     你的大体意思就是通过上位机的指令控制终端使能与否是吧
这个肯定是可行的    ...

是的,上位机指令控制中断使能已经实现了。
我的目的是:
1、上位机下发指令,中断使能打开,等待外触发(开关等)触发中断子程序
   case(上位机指令):{
     DINT;//关闭总中断
     IER  = IER&0xEFFF;
     IFR  = 0x0000;
     IER|= 0x1000;//使能INT13中断       
     EINT;   //开总中断
     return;
     }
   break;
2、外触发(开关等)触发,进入中断子程序
interrupt void INT13_ISR(void)
{
    IER  = IER&0xEFFF;
    IFR  = 0x0000;
    /*program*/
    IER  = IER&0xEFFF;
    IFR  = 0x0000;
}
子程序结束,关闭中断使能,再来外触发也不会进入中断子程序,只有上位机重新下发指令才能进入中断子程序。
现在的情况是,子程序结束,关闭了中断使能(IER  = IER&0xEFFF;),运行回主程序后,中断使能自动复位1,此时再次外触发,还是会进入中断子程序!

使用特权

评论回复
8
edishen| | 2014-9-3 14:36 | 只看该作者
这个问题不常见 求大师讲解

使用特权

评论回复
9
拿起书本| | 2014-9-12 14:12 | 只看该作者
建议你整体进行测试,然后重点通过手册看看这些使能位的使用。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝