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万:没有源的TZ中断?

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/616894/tms320f28075-tz-interrupt-without-source

部件号:TMS320F2.8075万

您好,

我对EPwmReg1进行了以下设置

- GPIO通过输入X-bar路由至TZ1。 (GPIO在设置中反转)

-通过输入X-bar向TZ3发出欠压信号。

- TZ5和TZ6与往常一样是系统时钟故障逻辑和EMUSTOP或

发生中断时,我读取TZOSTFLG寄存器,我看到值为1,即OST1为1。 但我看不到GPIO值读为0。 一直都是1! (TZ1激活时应为0;否则为1)

我的问题是, 当没有来自外部输入的输入时,ePWM1_TZ为什么会中断? 或者我做错了吗?

//源1
EALLOW;
GpioCtrlRegs.GPAINV.Bit.GPIO31 = 1;	/* TZ低电平活动-此引脚的输入反转控制*/
GpioCtrlRegs.GPACTRL.bit.QUALPRD3 = 0;/* QUT周期= SYSCLKOUT = 10ns */ GpioCtrl2
	= SEl2.GPQ3;样本 总样本数=10,如果6个样本的输入值较高(6*10ns=60ns),则该值确实较高。 */
GpioCtrlRegs.GPAPUD.bit.GPIO31 =1;	/*启用GPIO (TZx)上的上拉功能-1:禁用上拉功能。 */
InputXbarRegs.INPUT1SELECT = 31;/*		Input1与TZ1链接- PFC_TRIP */
EDIS;

//源2
EALLOW;
GpioBINlRegs.GPIOV.GPIO52=1;/*	TZ active low -此引脚的输入反转控制*/ GpioBINL.Regs = GPIOBIL.Regs
= GPIOV.GPIOQUOBIT.GPIOBIT.GPIOV.GPIO52= 1;
Ctrl2= 1 = GPIOGPIOQUO1.GPIO2= GPI.GPIO2= GPI.GPIO2= GPI.GPIO2= GPI.GPIO2= 1 /*定性样本=6;总样本=10,如果6个样本的输入较高(6*10ns=60ns),则该值确实较高。 */
GpioCtrlRegs.GPBPUD.bit.GPIO52 = 1;	//启用GPIO上的上拉(TZ3)-1:禁用上拉。
InputXbarRegs.INPUT3SELECT = 52;		/* INPUT3与TZ3链接- BP_UVL0V_TRIP */
EDIS;

__interrupt void ePWM_PFC_B_tzint_ISR(void)/* PFC -逆变器必须停止,因为PFC停止- ePWM1_TZTMP0_TMP_ST0_PFC0;




//读数1表示OST1所选事件发生行程。
TZ.ePWMx_PFC = EPwm1Regs.TZOSTFLG.ALL;
tz.counter_pfs++;

RST_SYS_STATUS.TAB_Fifo_ERROR[12]= GPIORegs.GPODAT.Bit.SYS_DataDataData31.PAT_RSfip_GE_STATUS_Gfip_GE.ST_STATUS_Gfi13._Gfip_GE_GE_STATUS_Gfip_GPO_STATUS.ST_GE.ST_STATUS_Gf.ST_Gfip_STATUS.ST_GPO.ST.ST_STATUS_GPO.PAT.ST.PAT.PAT.PAT.PAT.PAT.PAT.13_


RST_SYS_STATUS.TAB_Fifo_ERROR[0]= GpioDataRegs.GPBDAT.Bit.GPIO32;
RST_SYS_STATUS.TAB_Fifo_ERROR[1]= GpioDataRegs.GPBDAT.GPIO.GPIO_GPIOSTATUS_GPO5.3B.



RST_SYS_STATUS.TAB_Fifo_ERROR[5]= GpioDataRegs.GPBDAT.Bit.GPIO38;
RST_SYS_STATUS.TAB_Fifo_ERROR[6]= GpioDataRegs.GPBDAT.GPIO.GPIO_GPIOSTATUS.GPOS_GPOP.ST_GPOS.GPOS.Data.Data.B.SEB.SEB.SEB.



RST_SYS_STATUS.TAB_Fifo_ERROR[10]= GpioDataRegs.GPBDAT.GPIO51;

AdcdRegs.ADCSOC1.Bit.SOC6 =1;
//等待ADCD完成,然后确认标志
同时(AdcdRegs.ADCINTFlg.Bit.ADCINT1 = 1;
ADCE_CAST_CAST_RETT.CA.21


= 1;CAST_RECA.CAST_RECA.CAST_RECA.CAST_RECA.CAST_RECA.CA.CAST_RETT.CA.CAST_RECA.CA.CA.CAST_RECA.CAST.CA.CA.CAST.CA.CA.CA.CA.CAST.CA.CA.CAST.CA.CA.CAST.CAST.CA.CAST.CA.CAST.CA.CAST.

我正在我的日志文件中读取RST_SYS_STATUS.tab fifo_error数组值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它是否是阅读GPIOs的正确位置?
    GPIO (源1)是否有可能导致中断?但在ISR中,当我读取GPIO时,如果它变低,我将读取最新值,即低,这是我在日志中获得的值。 是这样吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Sagar:

    根据跳闸的输入源,GPIO在ISR出现时肯定会更改值。 您是否能够确定GPIO的范围以验证其是否正在切换?

    此致,
    克里斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我试着去做,但是太吵了。 我们正在以高功率运行! 无法区分噪音和实际信号。 在这种情况下,我认为最好的可靠来源是读取中断标志寄存器并查看导致中断的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Sagar,

    您可能会遇到的问题是设备无法区分噪音和实际信号。 每当您通过GPIO的阈值读取为'0'时,您就会跳闸。 这包括针脚上的噪声峰值。

    如果您想确定ISR所需的时间,可以设置eCAP,使其也连接到该引脚。 当引脚切换时,使用eCAP锁定,然后在ePWM ISR中,您可以读取当前的eCAP计数器。 这将告诉您事件和ISR之间的SYSCLK周期数。 但这只能帮助确认ISR延迟足够长,不能在ISR中读取。

    在您在其他帖子( https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/615194/2266599#2266599中61.5194万中提供226.6599万提供的226.6599万的示波器图像上,您的探头与设备的相对位置是什么? 如果您能将其尽可能靠近设备,这将有助于我们了解设备"看到"的内容。


    此致,
    克里斯