Hi,
I am trying to trigger the ADC to start conversion at the falling edge of PWM2B. I am able to generate an ADC interrupt and eventually read a value from channel10 when I trigger conversion on PWM1B ( when I set: EPwm1Regs.ETSEL.bit.SOCBSEL = 6; and AdcRegs.ADCSOC0CTL.bit.TRIGSEL=6;
Could anyone tell me what's missing in this setup which prevents either an SOC or EOC interrupts from occurring? Thanks you!!
Here is my setup
/* Configure ADC */
EALLOW;
AdcRegs.INTSEL1N2.bit.INT1E = 1; /* Enabled ADCINT1 */
AdcRegs.INTSEL1N2.bit.INT1CONT = 0; /* Disable ADCINT1 Continuous mode */
AdcRegs.INTSEL1N2.bit.INT1SEL = 0; /* setup EOC0 to trigger ADCINT1 to fire */
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0xA; /* Set SOC0 channel select to ADCINB2 */
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 8; /* Set SOC0 start trigger on EPWM1B, due to round-robin SOC0 converts first then SOC1 */
AdcRegs.ADCSOC0CTL.bit.ACQPS = 6; /* Set SOC0 S/H Window to 7 ADC Clock Cycles, (6 ACQPS plus 1) */
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 0; /* Configure early interrupts */
EDIS;
/* Assumes ePWM1 clock is already enabled in InitSysCtrl(); */
EPwm2Regs.ETSEL.bit.SOCBEN = 1; /* Enable SOC on B group */
EPwm2Regs.ETSEL.bit.SOCBSEL = 8; /* Select SOC from from CPMB on upcount */
EPwm2Regs.ETPS.bit.SOCBPRD = 0; /* Generate pulse on 1st event */
/*PWM2: Set period / duty / count mode */
EPwm2Regs.TBPHS.half.TBPHS = 0; //PHASE /* Set Phase register to zero */
EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; //TB_ENABLE; /* Phase loading disabled */
EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; /* Clock ratio to SYSCLKOUT */
EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET; /* Set PWM2A on Zero */
EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR; /* Clear PWM1A on match on count A up */
EPwm2Regs.AQCTLB.bit.ZRO = AQ_SET; /* Set PWM1B on Zero */
EPwm2Regs.AQCTLB.bit.CBU = AQ_CLEAR; /* Clear PWM2B on match on count B up */
EPwm2Regs.CMPB = 180; /* Set compare B value */
EPwm2Regs.CMPA.half.CMPA = 250; /* Set compare A value */
EPwm2Regs.TBPRD = PERIOD; /* Set period for ePWM1 */
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; /* Count up and start */
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;//TB_SYNC_IN;