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/TMS320F28379D:中断 ADC 或 ePWM

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/929780/ccs-tms320f28379d-interrupt-adc-or-epwm

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARE

工具/软件:Code Composer Studio

您好!

感谢你能抽出时间。  

我使用 ADC 中断来收集外部电压、通过28379D Launchpad 设计控制器、从而计算 CMPA 值。 最初、我通过两个独立的程序实现了 ADC 中断和 PWM 中断。 ADC 程序使用一些所需的计算来准确测量数据。 类似地、PWM 程序通过 PWM1、2、3生成具有可变开关周期的输出。 但是、当我使用 ADC 中断将这两个程序合并为一个程序时、虽然测量结果与 ADC 结果正确匹配、但我不会获得任何 PWM 输出。 我的任务是计算 ADC 输入的占空比、并将其用作 PWM 中的比较变量

 

  e2e.ti.com/.../combine-_2D00_-Copy.docx

。 请就此向我提出建议。 为供参考,我附上了该方案的概览。

谢谢你

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

    您好!

    您尝试的是一种非常常见的使用模式。
    您可以参考示例
    C:\ti\c2000Ware_3_01_00_00\driverlib\f2837xs\examples\cpu1\adc\adc_ex2_soc _ePWM.c
    此外、MotorCOntrolSDK 或 DigitalPowerSDK 中的大多数系统示例也使用类似的配置。
    确保 PWM 配置为影子模式、以便 CMPA 值反映在以下 PWM 周期中。

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

    非常感谢您的回复。

    我之前已经介绍过示例文件。 但我怀疑在使用 PWM 中断时、PIEIER3的黄色突出显示部分出了一些错误。 由于我使用 EPWM4来启动 ADC 单元的 SOC、我是否应该更改它? 与它旁边的类似、我已经声明了组1中断 IER、我是否必须将其更改为组3。 更具体地说、我希望清楚地了解以下命令行。

    PieVectTable.ADCA1_INT =&adca1_ISR;//针对 ADCA 中断1的函数
    //PieVectTable.EPWM1_INT =&ePWM_ISR;.................................. 应该是第4个中断

    //启用 PIE 中断
    PieCtrlRegs.PIEIER1.bit.INTx1 = 1;
    //PieCtrlRegs.PIEIER3.bit.INTx1 = 1;.................. 这是否需要更改?
    //启用全局中断和更高优先级的实时调试事件:
    IER |= M_INT1;//启用组1中断
    // IER |= M_INT3;
    EINT;//启用全局中断 INTM
    ERTM;//启用

    如果有人详细说明这一点、那将会很好。

    谢谢你

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

    您好!

    您可以使用任一中断组、我认为这不会停止 PWM 输出生成。
    您的代码是否进入 ISR?


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

    感谢您的宝贵建议。

    我想我没有正确地说明我的问题。 更改任一中断后、PWM 控制直到我尚未实现。 虽然问题对专家来说似乎更简单、但解决方案和理解对我来说至关重要。

    正如最初提到的、ADC 与 ADC1中断一起工作是正确的、与 ePWM 控制器的情况类似、我在这里使用了组3中断。 但是、作为一个组合程序、我只使用了 ADC ISR、其中的初始化是通过 EPWM4完成的。 PWM 输出预计来自 EPWM1、2、3。 但奇怪的是、我没有获得 PWM 输出、需要从 ADC 进行评估。  

    我的程序肯定会进入 ISR、否则、我如何获得 ADC 响应和控制器更新。 我的问题仍然不清楚 PWM、它需要从 ADC_ISR 内的控制器输出进行计算。 作为参考、我最初也上传了我的计划概述。

    我希望你们能作出积极的答复。

    感谢您的宝贵时间。

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

    您好!

    我看不到任何依赖项 w.r.t 使用特定中断的 PWM 操作。
    我可以建议您在下面继续进行调试并确定导致问题的原因。

    • 您可以在调试窗口中检查 PWM 寄存器、CMPA/B、TBCTR 等的值、并检查它们是否正在更新。
    • 您还可以在调试窗口中手动更改值、以确保生成 PWM
    • 此外、您可以单步执行代码、以确保 PWM 模块按预期进行初始化。

    显然、有些情况下软件配置未按预期进行。 您可以单步执行代码并找出它。
    首先要检查的是 PWM 寄存器值、如果它们都配置为您写入的值。 否则、初始化可能会有问题。  

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

    感谢您的建议和宝贵的时间。

    我在对整个程序进行彻底修订后发现了错误。

    谢谢你