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.

28035 TZ 触发 OST触发中断

Other Parts Discussed in Thread: CONTROLSUITE

链接仿真时,应用TZ触发,OST脉冲触发中断,TZEINT和PIE外设已经使能。

现在问题是:当发生GPIO为低,TZ触发能够封锁PWM脉冲,仿真打断点能够进入TZ触发中断,正常。但是如果不打断点,连续运行,即使TZ为低了,都不能进入tz触发中断?这是为何?

 

TZ触发中断,打断点和连续运行,有何区别?

  • 您的代码是怎么写的呢?您可以测下TI的例程:\ti\controlSUITE\device_support\f2803x\v130\DSP2803x_examples_ccsv5\epwm_trip_zone

  • 现在问题是:当发生GPIO为低,TZ触发能够封锁PWM脉冲,仿真打断点能够进入TZ触发中断,正常。但是如果不打断点,连续运行,即使TZ为低了,都不能进入tz触发中断?这是为何?



    TZ触发中断,打断点和连续运行,有何区别?“
    ERIC:
    打断点和连续运行在结果上应该是没什么区别的,你要看你是如何判断他进入中断的?
    会不会是判断的原因。
  • 判断GPIO16是否为低,进中断。我是将GPIO16引线手动接触GND进行拉低。

    初始化:
    EALLOW;
    EPwm7Regs.TZCLR.bit.OST = 1;
    EPwm7Regs.TZCLR.bit.INT = 1;
    EPwm7Regs.TZSEL.bit.OSHT1 = 1;
    EPwm7Regs.TZCTL.bit.TZA = TZ_FORCE_LO;
    EPwm7Regs.TZCTL.bit.TZB = TZ_FORCE_LO;
    EPwm7Regs.TZEINT.bit.OST = 1;
    EDIS;
    使能中断组:PIE外设中断
    EALLOW;
    PieVectTable.EPWM7_TZINT = &tz7int_isr;
    EDIS;
    PieCtrlRegs.PIEIER2.bit.INTx7 = TZINT7_ENABLE;
    当GPIO16为低时,触发中断:
    GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; // (TZ1)
    GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; // (TZ1)
    GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 3; //
    中断函数:
    interrupt void tz7int_isr(void)
    {
    ...绿灯亮...
    }

    当将GPIO16拉低至GND时,打断点能够,进入tz7int_isr函数,连续运行没有不能进tz7int_isr函数,但是能够看到TZ中断标志位置1了:EPwm7Regs.TZFLG.bit.OST=1,EPwm7Regs.TZFLG.bit.INT=1,但是就是不进中断,是否进中断以“绿灯事宜”。