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.

TMS320F28075: Comparator Interrupt continuously generated?

Part Number: TMS320F28075


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