This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

当使用GPIO中断时,在CCS中程序无法restart

Other Parts Discussed in Thread: ADS1298R, ADS1298

我自己做了块C6748的板子,所有的测试程序都运行正常,所有的外设都能正常访问。

但是,我发现,在这样一种情况下,程序在CCS中无法restart。

当红色方框中的程序运行后,当我按下restart按钮,程序不能restart了,就是点击restart按钮没有任何反应。

但如果不运行方框中的程序,当我按下restart按钮,程序可以restart,绿色箭头回到main函数开头。

但是我使用开发板测试同样的程序,即使在运行红色方框中的程序后,按下restart按钮,程序都可以restart。

我使用GP1[1]作为中断引脚。

所以我原来觉得,可能是GP1[1]管脚出了问题。但是,整个程序运行都是正常的,中断运行正常,数据采集结果也正常。

请问,这可能是什么原因引起的?不能restart。

谢谢!

  • 先点击红色的终止按钮,然后再点击restart按钮,restart可以起作用吗?

  • Feng Xu3 说:
    所以我原来觉得,可能是GP1[1]管脚出了问题。但是,整个程序运行都是正常的,中断运行正常,数据采集结果也正常。

    鉴于你说同样的程序在EVM板上是OK的,那么我想区别可能是在GP[1]在这个时候的状态,是不是这个时候GP[1]上已经触发了中断,你可以看一下IFR的INT5是否已经置位了,而相应的在EVM板上这个时候没有置位。

    还有具体来说是在这个程序内点击restart,还是在执行完这个程序后点restart的?这个程序本身是一个普通的初始化程序,使能了GP[1]的中断而已,所以有问题也不是这段代码本身,而要考虑使能这个中断后所造成的其它影响。

    中断服务程序是怎么写的?全局中断在哪使能的?

  • Hi Titan,

         "电极红色的终止按钮,然后再点击restart按钮,restart可以起作用吗?"

          按红色终止按钮,就退出debug了啊。

    Frank

  • Hi Tony Tang,

         按照你说的测试了一下。

         确实,EVM板采集完程序后停在断点处,INT5=NOPEND;而我的板子采集完程序后停在断点处,INT5=PEND。

         而且在Registers中,我尝试将其改为NOPEND,但是改不掉。那说明我板上这个管脚持续有中断信号过来,所以改不为NOPEND对吗?

         这个中断管脚是TI的ADS1298R芯片的DRDY_n管脚。我的板子和EVM的板子都是连的这个芯片管脚。

         由于我板上FPGA和ADS1298R都是BGA芯片,而且是在中间层走的线,所以没有办法用示波器观测这个脚的波形。

         还蛮奇怪的,因为这部分电路我的板子和EVM板是一样的。

          这是中断服务程序:

    全局中断在main中调用下面这个函数使能

    Frank

  • 哪个C6748的EVM板用的是ADS1298?

  • Hi Tony Tang,

          我是用ADS1298的EVM板与C6748的EVM板相连的,用导线将两块板子的SPI口以及相关的GPIO口相连的,当然GND也连的。

    Frank

  • 量不到信号就不好弄了。

    #1. 看在表层有没有地方可以刮开量的到?

    #2. 配置成另一个可以量到的GPIO口,用镊子什么的捅一捅来触发中断,看是不是表现不一样。

    按说GPIO中断是边缘触发的,如果一直是低电平或者高电平,也不会一直触发中断的,莫非他的走线周围有大干扰源,一直在这根线上产生毛刺不成?

  • Hi Tony Tang,

         你好!

         非常感谢你的建议,但是因为表层没有地方可以刮开量到,所以没有观测到这个信号。

         换了另一个GPIO口,用镊子捅没有发现此现象。

         另外,我在调试nandflash的测试程序时,发现了另外一个现象。我觉得可能与此相关,所以又发了一个帖子:

         http://www.deyisupport.com/question_answer/dsp_arm/c6000_dsp/f/32/t/113383.aspx

         您是否可以帮我看下,是否有可能有新的判断。

          谢谢!

    Frank

  • Hi Tony Tang,

          我找到原因了。

          不是硬件的问题,是我关中断的时候写错中断号了。

          GPIOBankIntEnable(SOC_GPIO_0_REGS, 1);写为了

          GPIOBankIntEnable(SOC_GPIO_0_REGS, 6);

          在你的提示下才找到了原因,非常感谢您的帮助!

    Frank