您好!
我正在尝试触发 ADC、以便在 PWM2B 的下降沿开始转换。 当我在 PWM1B 上触发转换时、我能够生成 ADC 中断并最终从通道10读取一个值(当我置位时:EPwm1Regs.ETSEL.bit.SOCBSEL = 6;和 AdcRegs.ADCSOC0CTL.bit.TRIGSEL=6;
是否有人可以告诉我、该设置中缺少哪些内容可防止 SOC 或 EOC 中断发生? 谢谢你!!
这是我的设置
/*配置 ADC */
EALLOW;
AdcRegs.INTSEL1N2.bit.INT1E = 1; //启用 ADCINT1 *
AdcRegs.INTSEL1N2.bit.INT1CONT = 0; //禁用 ADCINT1连续模式*
AdcRegs.INTSEL1N2.bit.INT1SEL = 0; //设置 EOC0以触发 ADCINT1触发*
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0xA; //将 SOC0通道选择设置为 ADCINB2 *
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 8; //设置 SOC0在 EPWM1B 上启动触发器,因为轮询 SOC0先转换,然后 SOC1 */
AdcRegs.ADCSOC0CTL.bit.ACQPS = 6; //将 SOC0 S/H 窗口设置为7个 ADC 时钟周期,(6个 ACQPS 加1)*/
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 0; //配置早期中断*
EDIS;
/*假定 ePWM1时钟已在 InitSysCtrl()中启用;*/
EPwm2Regs.ETSEL.bit.SOCBEN = 1; //在 B 组上启用 SOC *
EPwm2Regs.ETSEL.bit.SOCBSEL = 8; //从 CPMB 中选择 SOC,进行向上计数*/
EPwm2Regs.ETPS.bit.SOCBPRD = 0; /*在发生第一个事件时生成脉冲*
/*PWM2:设置周期/占空比/计数模式*/
EPwm2Regs.TBPHS.Half.TBPHS = 0; //PHASE /*将 PHASE 寄存器设置为0 *
EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; //TB_ENABLE; //禁用相位加载*
EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; /*时钟与 SYSCLKOUT 的比率*
EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET; //将 PWM2A 设置为零
EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR; //在递增计数时按匹配清除 PWM1A *
EPwm2Regs.AQCTLB.bit.ZRO = AQ_SET; //将 PWM1B 设置为零*
EPwm2Regs.AQCTLB.bit.CBU = AQ_CLEAR; //在计数 B 递增时按匹配清除 PWM2B */
EPwm2Regs.CMPB = 180; //设置比较 B 值*/
EPwm2Regs.CMPA.half.CMPA = 250; //设置比较值*
EPwm2Regs.TBPRD =周期; //为 ePWM1设置周期*
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; /*先递增后启动*
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;//TB_SYNC_IN;