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/TMS570LC4357:RTI + CAN1中断

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/577014/ccs-tms570lc4357-rti-can1-interrupt

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

工具/软件:Code Composer Studio

尊敬的 TI 团队:

我在计数器0上设置了一个50ms IRQ 中断的 RTI。 我还将 Halcogen 设置为在一条 IRQ 20ms CAN 消息上对 CAN1产生中断。 但是、当我将我的程序同时不再运行时、它们可以单独运行。 我的第一个想法是、也许我有嵌套中断。 我继续在 CANnotification 和 rtinoenification 函数 i _disable_IRQ_interrupt_()的开始和通知例程_enable_IRQ_interrupt ()的结束。 但是、这对问题没有帮助。  

在用于 RTI1计数器0的 Halcogen 内部、我设置 RTU 源配置-> 0

  RTI1比较 I 设置比较0周期-> 50 (ms)

我没有适当地禁用和重新启用中断吗?

我是否未正确设置 RTI1、在这里中断的发生速度比我预期的快得多?

Robert

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

    所以、每一项都是独立工作的、但当您将它们组合在一起时却不是独立工作的? 当您将它们组合在一起时、您是否会得到任何中断? 甚至一个? 您能否在每个 ISR 中设置断点并查看您是否要使用其中一个断点? 请注意、此时、我会从独立工作代码中删除您已置位的任何 IRQ 启用/禁用调用。

    您能描述一下您所描述的代码中发生了什么情况、这些情况根本不起作用吗? 它是进入 while (1)循环、还是获得异常或什么? 更多信息有助于进行调试。

    如果您认为您的 RTI 没有获得正确的周期、您是否可以向其添加一个 GIO 切换并使用范围进行测量以验证时序? 50us ISR 很可能会抑制 CAN 中断。 您能否检查 CAN 消息在运行足够长时间后是否已收到而没有收到中断? 是否设置了 CAN 标志? CANRx 数据是否在邮箱中?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Chuck、

    它现在看起来就像工作了。 我将 RTI 周期更改为适当的值。 此外、在我的 CAN 中、在开始时中断、我停止 RTI 计时器并在处理结束时重新启动它。

    如何禁用 CAN 中断? 在某些错误条件下、我需要接合电机、以提供钳位力来防止运动。 这可能需要2秒。

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

    请参阅技术参考手册 DCAN 一章中的27.10中断功能部分。

    IE0和 IE1位用于启用和禁用中断。 这些位位于 DCAN CTL 寄存器中(参见 TRM 的第27.17.1段)。 请注意、在主动通信期间有一些关于更改 CAN 控制寄存器的警示说明、您应该查看并注意这些注意事项。 请查看 TRM、了解更新 CAN CTL 寄存器时应遵循的正确程序。