Hi,
My system is as follow:
System-1:
Analog inputs -> Comparator Submodule ->EPWM x-bar -> Trip 5 -> Digital Compare Submodule in EPWM1 ->DCAEVT1 as source of OST -> EPWM2_TZ interrupt. ----------- Generates interrupts continuously.
Configurations are as follows:
Cmpss3Regs.COMPCTL.bit.COMPDACE = 1; Cmpss3Regs.COMPCTL.bit.COMPHSOURCE = INTERNAL_DAC; Cmpss3Regs.COMPDACCTL.bit.SELREF = REFERENCE_VDDA; Cmpss3Regs.DACHVALS.bit.DACVAL = 1118; Cmpss3Regs.COMPHYSCTL.bit.COMPHYS = TYPICAL_1x; Cmpss3Regs.CTRIPHFILCLKCTL.bit.CLKPRESCALE = 0; Cmpss3Regs.CTRIPHFILCTL.bit.SAMPWIN = 5; Cmpss3Regs.CTRIPHFILCTL.bit.THRESH = 3; Cmpss3Regs.CTRIPHFILCTL.bit.FILINIT = 0; Cmpss3Regs.COMPCTL.bit.CTRIPHSEL = CTRIP_FILTER; Cmpss3Regs.COMPCTL.bit.CTRIPOUTHSEL = CTRIP_FILTER; EPwmXbarRegs.TRIP5MUX0TO15CFG.bit.MUX4 = 0; EPwmXbarRegs.TRIP5MUXENABLE.bit.MUX4 = 1; EPwm2Regs.TZCTL.bit.TZA = TZ_FORCE_LO; EPwm2Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCBH_HI; EPwm2Regs.DCTRIPSEL.bit.DCAHCOMPSEL = 0x4; EPwm2Regs.DCAHTRIPSEL.bit.TRIPINPUT5 = 0; EPwm2Regs.TZSEL.bit.DCAEVT1 = 1; EPwm2Regs.DCACTL.bit.EVT1SRCSEL = DC_EVT1; EPwm2Regs.DCACTL.bit.EVT1FRCSYNCSEL = DC_EVT_ASYNC; EPwm2Regs.TZCLR.bit.DCAEVT1 = 1; EPwm2Regs.TZCLR.bit.OST = 1; EPwm2Regs.TZCLR.bit.INT = 1; EPwm2Regs.TZEINT.bit.DCAEVT1 = 1;
System-2:
Digital inputs (GPIO) -> input x-bar -> Trip1 (TZ1) -> EPWM 2 -> EPWM1_TZ -------- Generates interrupt once.
Configurations are as follows:
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; EPwm1Regs.TBCTR = 0x0000; EPwm1Regs.TBPRD = PWM_freqToTicks(SWITCHING_FREQ_HZ) / 2; EPwm1Regs.TBPHS.bit.TBPHS = 0x0000; EPwm1Regs.TBCTR = 0x0000; EPwm1Regs.CMPA.bit.CMPA = 0; EPwm1Regs.CMPB.bit.CMPB = PFC_B_PWM_ADC_START_CONVERSION; EPwm1Regs.TBCTL.bit.CTRMODE = TB_FREEZE; EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; EPwm1Regs.ETSEL.bit.SOCAEN = TB_ENABLE; EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTRU_CMPA; EPwm1Regs.ETSEL.bit.SOCBEN = TB_DISABLE; EPwm1Regs.ETSEL.bit.SOCBSEL = ET_CTR_ZERO; EPwm1Regs.ETPS.bit.SOCAPRD = ET_1ST; EPwm1Regs.ETCLR.bit.SOCA = 1; EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; EPwm1Regs.AQCTLA.bit.CAD = AQ_SET; EPwm1Regs.AQCTLA.bit.CBU = AQ_NO_ACTION; EPwm1Regs.AQCTLA.bit.CBD = AQ_NO_ACTION; EPwm1Regs.TZCLR.bit.OST = 1; EPwm1Regs.TZCLR.bit.INT = 1; EPwm1Regs.TZSEL.bit.OSHT1 = 1;
I have acknowledged PIE interrupts in ISRs in both. My problem is that why does system-1 generates interrupt continuously considering trip zone interrupts configurations are more or less the same. I am manually controlling inputs here. It's not that analog inputs are continuous and thus causing trips in system-1.
Can somebody guide me? Let me know if you want to know more information.
Thank You,
Sagar