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.

[参考译文] TMS320F280025:使用 OST 清除 tripZone 中断标志

Guru**** 2538950 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1170177/tms320f280025-clear-tripzone-interrupt-flag-with-ost

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

您好!

通过 GPIO 设置跳闸条件时、我使用 OST 跳闸区域将 PWM 驱动为低电平。


GPIO 为低电平有效 I 测量值、并确保它最初为高电平、并在跳闸条件发生时继续工作

我不知道清除中断标志的正确方法、会发生跳闸条件、并且我正在使用  EPWM_clearTripZoneFlag API 来清除 TZCLR 寄存器中的 OST 位、但在调试器中该位不会被清除。 请查找所附照片  

下面是我如何清除应用程序中的标志  

ISR_Function void INT_PWM_HV_T1T2_TZ_ISR (void)

//
//重新启用 OST 中断
//
ePWM_clearTripZoneFlag (PWM_HV_T1T2_base、(ePWM_TZ_INTERRUPT | ePWM_TZ_FLAG_OST));
//
//确认此中断以接收来自组2的更多中断
//
INTERRUPT_clearACKGROUP (INTERRUPT_ACK_group2);

我认为断言条件可能是这里的问题吗?

请指导我在跳闸条件经过后清除 OST 标志的正确方法

谢谢   

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

    您好!

    您能否尝试如下所示的操作:

    ePWM_clearTripZoneFlag (PWM_HV_T1T2_base、ePWM_TZ_FLAG_OST | ePWM_TZ_INTERRUPT | ePWM_TZ_FLAG_DCAEVT1);

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

    您好、Santosh、

    感谢您的回答。 我会尝试一下

    我是否可以问为什么添加  EPWM_TZ_FLAG_DCAEVT1有助于清除 OST 标志?

    它们有何关联?

    提前感谢您的解释  

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

    我需要对其进行更详细的研究。 我查看了一个工作示例并与您的实施进行了比较。 请尝试此操作并告知我。 同时、我将在明天对此进行研究。

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

    您好、Santosh、

    它不工作。

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

    OST 标志不能通过以下命令清除: ePWM_clearTripZoneFlag (PWM_HV_T1T2_base、ePWM_TZ_FLAG_OST | ePWM_TZ_INTERRUPT | ePWM_TZ_FLAG_DCAEVT1);

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

    您好、Mohamed、

    我将尝试重新创建此问题、并在今天晚些时候返回给您。  

    谢谢、Santosh

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

    您好、Santosh、

    非常感谢

    仅提供一个更多信息。 在调试器中、通过此 API EPWM_enableTripZoneInterrupt (PWM_HV_T1T2_base、EPWM_TZ_INTERRUPT_OST)平衡中断后、TZOSFLG 寄存器中的 OST1标志位立即置1;  

    我认为也许跳闸总是发生的、我通过 DATA= GPIO_READPin (12); >>数据等于1来读取 GPIO 引脚的值  
    对我来说、这是可以的、因为我将引脚配置为浮动输入

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

    您好、Mohamad、

    我最初以为您使用一次性跳闸作为 DCAEVT 的来源、这就是我建议这样清除的原因。 但看起来您在 TZ1上使用一次性跳闸。 因此、您的原始代码是正确的。

    我刚刚测试了 C2000Ware 跳闸区域示例

    C:/ti/c2000/C2000Ware_4_02_00_00/driverlib/f28002x/examples/epwm/epwm_ex1_trip_zone.c

    它使用 GPIO12作为跳闸的输入。 它可以缝合以正常工作。 代码就是您拥有的代码。  

    您能否尝试此示例、看看它是否适用于?

    此外、您应该将 GPIO12配置为"输入上的上拉使能"。

    谢谢、此致、