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.

TMS570SCI中断

Other Parts Discussed in Thread: HALCOGEN

你好,

我使用SCI/LIN模块,中断使用INT0,TX_INT,在中断向量表中映射了中断服务程序地址,数据发送后,TX标志寄存器正确,vect0寄存器值为12,正确指示发送中断,但是测试没有进入中断服务程序。可能是什么原因呢?

  • Hi fan,

       你遇到的这个问题很常见,特别是我们的SCI/LIN 这个模块的中断服务程序。

    首先,因为这个模块是SCI和LIN公用的一个程序,所以你在HALCOGEN里面配置VIM Channel是应该选择channel 13--LIN1 level0.

    其次,在主程序里面你调用关于SCI的程序时,选择的SCI寄存器也是scilinREG.类似于下面的语句:

    sciSend(scilinREG,sizeof(byte),&byte);

    最后,在主程序中别忘了加上_enable_IRQ();来使能我们的全局中断。

    谢谢

    ken

  • 你说的原因,我做的都是对的。我是映射侧LIN1level0,也使能了全局中断。也是用的scisend函数。发送数据后,能看到cect0寄存器中的值是正确的,指示产生了发送中断,可是就是没有进入到中断服务程序中。

    测试程序中就只有发送数据这个功能函数,会不会跟程序处理时间太快有关呢?另外一个工程跟这个工程的scilin寄存器核vim配置相同,就能进入接收中断服务程序。

  • Hi fan,

      程序处理太快进不了中断,这个基本不太可能。应该还是程序的设计上面有点问题。而且你两个例程,一个是接收中断一个是发送中断。接收的能进,发送的不进,这个感觉还是在程序设置方面有问题。

      我上传一个关于SCI的程序供你参考吧.

    谢谢

    ken

  • 你有没有使用multibufer模式,如果使用了linREG->TDx[0]是发送的,linREG->RDx[0]是接收的,千万别搞错,这个TI弄的有点坑(其他的地方用scilinreg没有问题)