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.

[参考译文] CCS/UCD3138A64:定时器中断的实现

Guru**** 2382230 points
Other Parts Discussed in Thread: UCD3138A64
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/786113/ccs-ucd3138a64-implementation-of-timer-interrupt

器件型号:UCD3138A64

工具/软件:Code Composer Studio

我尝试在 ucd3138a64上实现计时器中断,我将 T24CMPCTRL0寄存器的位1设为1,并使用 IRQ 类型的硬件中断,但我在 IRQIVEC 上没有得到任何值。  从 INTREQ 寄存器我可以看到一个中断仍在处理中。 为了获得一个定时器比较捕捉中断或者一个定时器溢出中断、我应该怎么做  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Anirudh、您好!

    工程师正在对此进行研究、并将返回给您。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在我看来、您好像没有设置 REQMASK 寄存器中的位。 这是中央中断模块中的寄存器、用于使能从定时器24到实际中断的中断。 计时器24实际上获得5位:

    #define CIMINT_All_TMR_COMP0(0x00400000)// 2224位定时器比较0中断
    #define CIMINT_All_TMR_CAPT0(0x00200000)// 2124位定时器捕捉0中断
    #define CIMINT_All_TMR_COMP1(0x00100000)// 20个24位定时器比较1中断
    #define CIMINT_All_TMR_CAPT1(0x00080000)// 1924位定时器捕捉1中断
    #define CIMINT_All_TMR_OVFL(0x00040000)// 1824位定时器计数器溢出中断

    您可以在数据表中找到每个器件的位位置-它们的功能在每个器件上都有一些变化、具体取决于提供的外设。

    我们的培训和 EVM 代码通常保持用户模式以提供一些保护、并且在用户模式下无法写入 REQMASK。 因此、我们使用软件中断、并调用函数 write_reqmask。

    因此、如果您具有此函数、我认为您只需说:

    WRITE_REQMASK (CIMINT_All_TMR_COMP0);

    如果您查看 EVM 代码、或者更好的是我们的培训代码、您将看到此函数以及如何使用它。

    如果您尚未查看此视频和代码、我建议您尝试它们。 它们很好地介绍了 UCD、工具以及我们在 EVM 中使用的代码结构。

    training.ti.com/ucd3138-digital-power-training-series