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.

C6657定时器中断周期

Other Parts Discussed in Thread: TMS320C6657

您好

关于TMS320C6657的定时器中断周期有几个问题,希望能得到您的解答。

现象

我使用的本论坛提供的定时器例程来测试中断周期。通过TSCL的值测得中断周期只有37cycles。和设定的1ms完全对不上。

www.deyisupport.com/.../8540.aspx

问题

1  中断Flag没有clear,是否是此原因造成反复进入中断?

2  中断Flag是否需要清除? 定时器模块和Corepac中相应的中断Flag多需要清除吗?清楚前是否需要在定时器模块和Corepac中禁止中断发生。

ps

实验使用环境

1 CCS v5.3

2 pdk_C6657_1_1_2_6

3 compiler 7.4.2

4 C6657 EVM board

期待您的回复。

谢谢

bai

  • Flag一般需要清除。如果不清除会有两种状态,要么就会一直中断,要么就以后再也不会中断。这个具体根据中断硬件信号实现来决定,但如论如何,如果中断有需要Flag一般都要清除。

    你这个中断分为两层,一层来源是定时器,另一层是corepac,定时器产生中断信号,然后输出信号给corepac。理论上来说你需要清除定时器的中断,因为这个是源头。

  • 您好,King Wang1

    很高兴收到您的回复。

    因为keystone_timer的例程中,中断程序并未包含清除中断Flag的code。 所以在中断程序的末尾我加入了清除定时器中断Flag和清除Corepac Flag的Code。

    结果是跳出中断程序上述Flags又都被置1。马上又跳回中断程序执行。

    经过试验后来发现以下两个问题。

    1 发现所用的Timer Count暴走了。 本应6个CPU周期加一的Timer count,一个CPU周期内增加了200多。Timer设定是无Reload的Countiunous Mode,周期为1000。不明白为什么Timer Count跑飞了。

    2 后来使用下面CSL中的Timer例程,现象与1一样。中断程序中只清除了CorePac Flag。不知道为什么没有清除Timer中的中断Flag的CSL函数。是没有必要清除吗?

    期待您的回复

    Bai