打印

关于c5402外部中断反应慢的疑问,不解,求教!

[复制链接]
2049|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 guohuimao 于 2013-9-3 22:16 编辑

问了ti工程师,仍未搞明白,特向大牛们求教!
说明:dsp主频为100MHZ,int0中断中翻转标志flag, main()中据flag闪led,示波器测试上部波形为触发脉冲,下部为led变化电平。按理一个clk为10ns,怎么 着也不至于500ns后才变化led引脚电平滴。
  此现象引起的最大顾虑是,如果中断响应延时过长,导致isr服务时间很有限,代码量受到限制,无法完成规定的任务(很多路DAC要转换输出波形,而每个DAC写入及转换都另需延时,同时译码电路也有几十ns延时。 为验证int0,我去除了其它任何事务,只是闪led测试,main函数中除闪灯及一句nop外,再无其它语句)。

截图00.jpg (71.17 KB )

c5401 int0

c5401 int0

相关帖子

沙发
zhangmangui| | 2013-9-3 22:49 | 只看该作者
没太看明白你的意思   你输出控制led的是GPIO吗  
GPIO的最大相应时间是多少k呢

使用特权

评论回复
板凳
crjab| | 2013-9-4 15:44 | 只看该作者
好贴需要顶一个~~~~~~~~~~~~

使用特权

评论回复
地板
guohuimao|  楼主 | 2013-9-5 20:36 | 只看该作者
   需要进一步说明一下方法。
 我的系统是ARM+DSP+DAC, 触发脉冲由外部生成,固定频率,接入dsp之int0. dsp在此脉冲下,读正弦表数据送DAC 生成正弦波形。附件所述为简化过程,目的是用于测试dsp的中断反应速度。
 示波器实测参数在文档中画了一下,是准确的时序图。
 之所以没在dsp中断中直接翻转输出引脚(C5402只有一个脚输出,且其状态受中断保护,退出中断时将还原中断前状态,因此,中断中闪灯比较麻烦。当然完全可以做,要判定相关寄存器是可以做的,麻烦没做。况且与本问题关系不是很大)。
 再帮忙分析一下,究竟是什么原因导致中断反应为何推迟在500ns左右。

使用特权

评论回复
5
guohuimao|  楼主 | 2013-9-5 20:38 | 只看该作者
volatile int flag=0;  

void Dsp_init()
{   
        while(CLKMD & 0x01)        CLKMD = 0;        //wait start up complete
          CLKMD = 0x9007;                                        //8M*10 , Crystal on the board is 8MHz.
         
        PMST = 0x00A0;                                       
        SWWSR = 0x1240;       
        SWCR = 0x00;                                         //x1
        BSCR = 0xF800;  
       
        IFR = 0xFFFF;                                               
        IMR = 0x0201;                                                //enable hpint,enable int0
       
        asm(" RSBX        INTM ");                            //(In ST1)INTM=0,enable interrupt global gate
}

void interrupt c_int0(void)
{
                if(flag==0)                                        // set a 标志寄存器, let main() blink led
                {
                        flag=1;     
                }       
                else
                {
                        flag=0;     
                }       
}

void main()
{
    …….// init dsp
        while(1)
        {

                if(flag==0)
                {
                        asm("        SSBX XF         ");        //on
                }       
                else
                {
                        asm("        RSBX XF         ");        //off
                }                       
        }               
}

使用特权

评论回复
6
zhangmangui| | 2013-9-7 17:20 | 只看该作者
guohuimao 发表于 2013-9-5 20:36
需要进一步说明一下方法。
 我的系统是ARM+DSP+DAC, 触发脉冲由外部生成,固定频率,接入dsp之int0. ds ...

这个反应推迟可能与硬件自身有点原因   具体就说不好了

使用特权

评论回复
7
guohuimao|  楼主 | 2014-9-3 18:27 | 只看该作者
发现在中断中,判定一个数用"=="常常无效,而用'>='就有效.不知CCS是否有问题!

使用特权

评论回复
8
七颗咖啡豆| | 2014-9-5 09:14 | 只看该作者
弱弱的问下,示波器把示波器两探头交换 在测下波形可以不:lol

使用特权

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

本版积分规则

4

主题

49

帖子

1

粉丝