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/TMS320F28027F:主 ISR 的附加中断

Guru**** 2534260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/605527/ccs-tms320f28027f-additional-interrupt-to-main-isr

器件型号:TMS320F28027F

工具/软件:Code Composer Studio

大家好、

我一直在实施电机驱动器、该驱动器主要基于 lab11b 示例、基于速度环路之上的附加相位环路锁定到基准信号。 它可以工作、但仍然存在一些相位抖动。 这主要是因为我使用15kHz 的 MAIN_ISR 频率对基准信号和相位误差进行采样。 为了进行优化、我希望实现另一个运行速度可能是 MAIN_ISR 速度的两倍甚至四倍的 ISR。 但我不确定这是否可能。 正如您在 hal.c 文件中看到的那样、所有三个定时器似乎都已在使用中。 我还一直在查看给定的 CPU 定时器示例、但这些示例似乎使用了一些不同的库文件。 是否有任何简单的方法来设置新的手柄?

非常感谢您的参与、

Fabian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以使用 CPU 计时器或其他保持 PWM 计时器来设置快速中断、但不能在此 ISR 中添加过多代码来占用 CPU 带宽、否则这将影响电机控制。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、听起来不错。 我一直在尝试将 CpuTimer 示例迁移到 InstaSpin 项目中、但我遇到了大量错误、例如:

     未定义     的首次引用      
     符号                      
     ------      --------      
     _CpuTimer2Regs./F2802x_cputimers.obj

    错误#10234-D:未解析的符号仍然存在
    错误#10010:链接期间遇到错误;未构建"proj_lab11b.out"

     即使包含所有头文件和 c 文件也是如此。
    在 main.c 中是否有一个可用于执行 ISR 设置的简短代码段? HALayer 很好、但我不知道如何将新 ISR 包含在其中。
    谢谢、

    Fabian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、我修复了这个问题。 原因是库链接错误。 CPU 定时器工作正常。
    无论如何、现在的问题是、中断正被主 ISR 延迟。 是否可以更改中断优先级以使其实时发生? 这对于我进行精确测量至关重要。 在定制 ISR 中、唯一要发生的事情是两次 GPIO 读取并增加一个值、因此不会花费太多时间。

    非常感谢您、

    Fabian
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、这不是我想要的方式。
    定制 ISR 确实会对调节产生不良影响。 是否可以使用 eCAP 模块来读取信号的脉宽? 我只看到它在计数上升沿。
    我需要的是在信号处于高电平时进行计数。
    是否有办法做到这一点?