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.

[参考译文] TMS320F2.8075万:跳闸区域中断未生成

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/614805/tms320f28075-trip-zone-interrupt-not-generating

部件号:TMS320F2.8075万
主题中讨论的其他部件:C2000WARE

您好,

我正在使用比较器子模块生成一个断路,该断路连接到ePWM tripzone。 我已将行程配置为单触式。 我看到OST标志在TZFLG中为1,但INT标志保持为0。 我需要生成中断,以便在ISR中设置必要的变量。 为什么不生成中断?  

比较器和ePWM初始化。

EALLOW;
/****步骤1:启用并配置比较子系统。 ****////
启用CMDSS
Cmpss3Regs.COMPCTL.bit.COMPDACE = 1;
//NEG信号来自DAC
Cmpss3Regs.COMPCTL.bit.COMPHSOURCE = INTERNAL _DAC;
//使用VDDA作为DAC
Cmpss3Regs.COMPDACCTL.bit.SELREF的参考 = reference_VDDA;
//为任意参考
Cmpss3Regs.DACHVALS.bit.DACVAL将DAC设置为中点 = 1118;//
设置为典型滞后
Cmpss3Regs.COMPHYSCTL.bit.COMPHYS		= Typical_1x;

/****步骤2:配置数字滤波器******////
最大CLKPRESCALE值提供了两个样本之间的最长时间
Cmpss3Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE =0;		// 0
提供了最大分辨率(10CMPIN.WMPIN.WMPIN/最大 样本数
= 13;
//最大阈值需要整个窗口的静态值
//阈值应大于SAMPWIN
Cmpss3Regs.CTRIPHFILCTL.bit.therh的一半 =7;/****

步骤3:在数字FIFO中初始化样本值**///
不使用初始化。 复位时,所有FIFO值都将为零。
Cmpss3Regs.CTRIPHFILCTL.bit.FILINIT =0;/****

步骤4:配置CTRIPOUT路径**////	
数字过滤器输出馈送CTRIPH和CTRIPOUTH
Cmpss3Regs.COMPCTL.bit.CTRIPHSEL = CTRE_FILTER;
Cmpss3Regs.COMPCTL.bit.CTRIPOUTHSEL = ctim_filter;

/****步骤5:配置ePWM X-bar模块以接受过滤器输出**////
将TRIP5配置为CTRIP3H
EPwmXbarRegs.TRIP5MUX0TO15CFG.Bit.MUX4 =0;//
为输出MUIP5 Mux
配置TRIP5 MUXbarRegs.TRIP5MUX5.pb配置TRIP5bit /UEPB****

在
输出上配置MUABITEX4和MUABIPwb:配置MUB****步进= 0
EPwm2Regs.TZCTL.bit.TZA					= TZ_FORT_LO;	
EPwm2Regs.TZCTL.bit.TZB					= TZ_FORT_LO;
//将DCA配置为TRIP5
EPwm2Regs.TZDCSEL.bit.DCAEVT1 	= TZ_DCBH_HI;
EPwm2Regs.DCTRIPSEL.bit.DCAHCOMPSEL 	= 0x4;			// Trip5
EPwm2Regs.DCAHTRIPSEL.bit.TRIPINPUT5 	= 0;				//单跳闸输入;非ORed
//将DCA配置为OST
EPwm2Regs.TZsel.bit.DCAEVT1 	= 1;				//启用
//配置要取消筛选的DCA路径和异步
EPwm2Regs.DCACTL.bit.EVT1SRCSEL = DC_EVT1;
EPwm2Regs.DCACTL.Bit.EVT1FRCSYNCSEL = DC_EVT_Async;
//清除跳闸标志
EPwm2Regs.TZCLR.Bit.OST					= 1;
EPwm2Regs.TZCLR.Bit.INT 	= 1;
//启用DCA中断
EPwm2Regs.TZEINT.Bit.OST 	= 1;
EDIS; 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    我写这封信是为了告诉您,一位C2000小组成员已被指派担任此职位,应该很快就会回答。

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

    您好,Sagar:

    是否在PIE和IER中启用了中断? PIEIFR和IFR中标记的值是什么? 此应用程序是否与此处的其它线程相同?

    此致,

    克里斯

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

    您是否签出了以下示例:C:\ti\c2000Ware_1_00_01_00\device_support\f2807x\examples\CPU1 ePWM_TRIK_Zone\cpu012807 ePWM_TRIK_Zone\cpu01

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

    您好,Kris:

    1.是的,我已在PIE和IER中启用中断。
    2. PIEIFR:1,IFR:0
    3.是的,它是相同的应用程序。 只是不同的分支。 奇怪的是,在我确认了用于进一步中断的PIE中断组之后,该早期版本工作了,而这一个却没有。

    谢谢!
    Sagar

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

    是的,我看了这个示例,然后按照相同的行进行操作。 唯一的区别是,我不会在ISR内重新布设OST,因为我想在检测到中断后关闭系统。

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

    Sagar,

    在这种情况下,您不会收到任何中断,对吗?

    是否可以发布启用PIE和IER的代码? 由于PIEIFR标志正在设置,听起来似乎PWM已正确设置。  小心EALLOW这样的东西。 您可能需要检查PIEIER和IER寄存器中的值,以验证写入是否生效。

    此致,

    克里斯

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

    是,未接收任何中断。

    IER || M_INT1 | M_INT2 | M_INT3 | M_INT8 | M_INT9 | M_INT10 | M_INT11 | M_INT12 | M_INT14;//启用中断
    PieVectorTable.EPWM2_TZ_INT =&ePWM_PFC_B_B_tzint_ISR; 
    PieCtrlRegs.PIEIER2.bit.INTx2 = 1;/* EPWM2_TZ */ __interrupt void ePWM_PFC_B_B_tzint_ISR(void) { IF(EPwm2Regs.TZOSTFLG.Bit.DCAEVT1) interrupt.Tripzone[IPZONE_PT_IPSE_RECODE_PACK_1EROWDE_POST_POST_PIPSE_PIPSE_DE_PACST_P1.PACK,全 2 = PIPSE_RECOLOWDE_DE_DE_PACTE.POST_DE_PACST_DE_DE1

    我尚未将EALLOW用于IER和PieCtrlRegs。 这是问题吗? 我认为这些regs没有写保护。 如果我错了,请纠正我。

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

    Sagar,

    我确认IER和PieCtrlRegs写入不需要EALLOW。 PieVectorTable需要EALLOW。 从我们的一个示例代码中,下面是适用的代码:

    EALLOW;//这是写入EALLOW保护寄存器所必需的
    PieVectorTable.EPWM2_TZ_INT =&epwm2_tzint_isr;
    EDIS;

    如何确定中断未发生? 您是否正在使用断点或监视TRIPZONE_PFC_B_PLUS变量? 此变量的默认值是什么?


    此致,
    克里斯

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

    我在ISR内使用断点。 TRIPZONE_PFC_B_PLUS的值为2。 我将在其他例程中查看tz.tripzone数组。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sagar,

    只是快速检查一下。 设置IER后,您是否有以下代码启用全局中断?

    EINT;

     

    此致,

    Vivek Singh

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

    在最初的帖子中,你说“OST标志在TZFLG中是1,但INT标志保持在0”

    您是否指TZFLG寄存器中的INT标志? 如果未设置,则不应设置PIEIFR标志。 您是否可以确认您看到PIEIFR2[INTx2]=1和TZFLG[INT]=0?

    此致,
    克里斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,我指的是TZFLG注册表中的INT标志。 我看到PIEIFR2[INTx2]=1和TZFLG[INT]=0。

    注:我现在无法再现相同的情况。 我决定在其他部门工作
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没问题。 如果您再次出现此问题,请告知我们。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然。 我会:)