您好!
我的系统如下所示:
系统1:
模拟输入->比较器子模块-> ePWM x-bar -> TRIP 5 -> EPWM1中的数字比较子模块-> DCAEVT1作为 OST 的源-> EPWM2_TZ 中断。 ------ 连续产生中断。
配置如下:
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;EPwm2MUZDCRIT1.TCALE.TCAREG.TZT.TZL.TZTCAREG.TZL.TZEMP.TZEMP.TZL.TZEMP.T = 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_异 步; EPwm2Regs.TZCLR.bit.DCAEVT1 = 1; EPwm2Regs.TZCLR.bit.OST= 1; EPwm2Regs.TZCLR.bit.INT= 1; EPwm2Regs.TZEINT.BIT.DCAEVT1 = 1;
系统2:
数字输入(GPIO)->输入 x-bar -> Trip1 (TZ1)-> ePWM 2 -> EPWM1_TZ --- 生成中断一次。
配置如下:
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_updown; EPwm1Regs.TBCTR = 0x0000; EPwm1Regs.TBPRD = PWM_freqToTicks (switching_FREQ_Hz)/ 2; EPwm1Regs.TBPHS.bit.TBPHS = 0xTBW0000; EPwm1RCTR = 0xTBW0000; EPwm1Regs.CMPA.bit.CMPA = 0; EPwm1Regs.CMPB.bit.CMPB = PFC_B_PWM_ADC_START_COREM; EPwm1Regs.TBCTL.bit.CTRMODE = TB_FREEEPwm1Regs.TBCTL.bit.HSPIV1TBIN.TBIV1; EPwDIV_TBIV1TB.TBIT.TBIT.TBIV1RMODE = TBDCTL.TBIT.TBIV1TBIV1TB.TBIT.TBIV1TB.TBIT.TBIT.TBIV1RMODE = TB EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADD; EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADDADE; EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADDADDADM1Regs.CMPCTL.bit.LOTL.TCC_ZERO ;EPwmCTR = EPwCTR = ADCMOCTL.ADDR_ZERO;EPwCTR = ADCMOCTR = ADCMOCTL.TL.ADDR_ZERO EPwm1Regs.ETSEL.bit.SOCAEN= TB_ENABLE; EPwm1Regs.ETSEL.bit.SOCASEL= ET_CTRL_CMPA; EPwm1Regs.ETSEL.bit.SOCBEN= TB_DISABLE; EPwm1Regs.ETSEL.bit.SOCBSEL= ET_1Regs.et_SOPs ;EPwm1RP.TOP.ST.TOPs = ET_0;EPwMRD = TL.TBIT.OPS_0;EPwm1RPM_0;EPwmRPM_ 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 = AQNO_action; EPwm1Regs.TZCLR.bit.OST = 1; EPwm1Regs.TZCLR.bit.INT = 1; EPwm1Regs.TOSZ1;THTRegs.TOS1
我已确认这两个 ISR 中的 PIE 中断。 我的问题是、为什么系统-1会在跳闸区域中断配置大致相同的情况下连续生成中断。 我在这里手动控制输入。 模拟输入不是连续的、因此会导致系统1发生跳闸。
有人可以指导我吗? 如果您想了解更多信息、请告诉我。
谢谢、
Sagar