Hi all,
I Try to capture the PWM Counter value on a falling edge on the TZ3 input of my 2802x device.
So far I was able to configure the Digital-Compare submodule and generate a DCAEVT1 event. For testing purpose I set the EPwm1Regs.DCACTL.bit.EVT1SYNCE = 1; and checked the EPWMSYNCO on the devise pin. The Counter Caputre of the Digital Compare Submodule shows only a 1 in the DCCAP register. The actual configuration of the PWM module is shown below:
// Setup TBCLK
EPwm1Regs.TBPRD = PWM1_TIMER_TBPRD;
EPwm1Regs.TBPHS.half.TBPHS = 0;
EPwm1Regs.TBCTR = 0;
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
// Setup shadow register load on ZERO
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;
// Set Compare values
EPwm1Regs.CMPA.half.CMPA = 20;
EPwm1Regs.CMPB = 120;
// Set actions
EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm1Regs.AQCTLA.bit.CBU = AQ_CLEAR;
// Set Events
EPwm1Regs.ETSEL.bit.INTSEL = 1;
EPwm1Regs.ETSEL.bit.INTEN = 1;
EPwm1Regs.ETPS.bit.INTPRD = 1;
//PWM1 Digital Compare Module
EALLOW;
EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_TZ3; // DCAH = TZ3
EPwm1Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_LOW; // DCAH = low, DCAL = don't care
EPwm1Regs.DCACTL.bit.EVT1SRCSEL = DC_EVT_FLT;//DC_EVT_FLT; // DCAEVT1 = DCAEVT_FLT (filtered)
EPwm1Regs.DCACTL.bit.EVT1FRCSYNCSEL = DC_EVT_SYNC; // Take sync path
EPwm1Regs.DCACTL.bit.EVT1SYNCE = 0; // sync PWM for testing purpose
EPwm1Regs.DCFCTL.bit.BLANKE = 1;
EPwm1Regs.DCFCTL.bit.PULSESEL = 1;
EPwm1Regs.DCFWINDOW = 1;
EPwm1Regs.DCCAPCTL.bit.CAPE = 1;
EPwm1Regs.DCCAPCTL.bit.SHDWMODE = 1;
EPwm1Regs.TZCTL.all = 0x0FFF; // Do nothing on DCAEVT1
EDIS;
Is it possible to capture the TBCTR on a falling edge of an external signal?
Sincerely,
Tobias