guohuimao 发表于 2013-9-3 22:04

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

本帖最后由 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外,再无其它语句)。

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左右。

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
                }                       
        }               
}

zhangmangui 发表于 2013-9-7 17:20

guohuimao 发表于 2013-9-5 20:36 static/image/common/back.gif
需要进一步说明一下方法。
 我的系统是ARM+DSP+DAC, 触发脉冲由外部生成,固定频率,接入dsp之int0. ds ...

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

guohuimao 发表于 2014-9-3 18:27

发现在中断中,判定一个数用"=="常常无效,而用'>='就有效.不知CCS是否有问题!

七颗咖啡豆 发表于 2014-9-5 09:14

弱弱的问下,示波器把示波器两探头交换 在测下波形可以不:lol
页: [1]
查看完整版本: 关于c5402外部中断反应慢的疑问,不解,求教!