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

[复制链接]
1547|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 | 显示全部楼层
zhangmangui 发表于 2014-9-2 22:13 | 显示全部楼层
应该是可以的     你的大体意思就是通过上位机的指令控制终端使能与否是吧
这个肯定是可行的   
 楼主| kutu佐夫 发表于 2014-9-3 08:53 | 显示全部楼层
wangdezhi 发表于 2014-9-2 21:24

在子程序里,中断使能和标志位是可以清零的。但是出了子程序,int13中断使能位又复位1了,现在不知道这个动作是谁赋予的。(出子程序,标志位保持0,这个是正确的)
 楼主| 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,此时再次外触发,还是会进入中断子程序!
edishen 发表于 2014-9-3 14:36 | 显示全部楼层
这个问题不常见 求大师讲解
拿起书本 发表于 2014-9-12 14:12 | 显示全部楼层
建议你整体进行测试,然后重点通过手册看看这些使能位的使用。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部