请问下,28335用EPWM模块触发的ADC中断,是采样完成后才进入到ADC中断吗?在哪里有详细的描述
Eric Ma:
请问下,28335用EPWM模块触发的ADC中断,是采样完成后才进入到ADC中断吗?在哪里有详细的描述
ERIC:PWM触发ADC开始转换,一般来讲,会配置ADC转换完成之后产生ADC中断。看你程序中如何去配置中断。具体的描述你可以看一下ADC的user guide.
请问下,28335用EPWM模块触发的ADC中断,是采样完成后才进入到ADC中断吗?在哪里有详细的描述
xie liuyang:
回复 Eric Ma:
1、先是PWM 事件触发
EPwm1Regs.ETCLR.bit.INT = 1; //首先清除中断标志 EPwm1Regs.ETSEL.all = 0x0F09; //EPwm1Regs.ETSEL.bit.INTEN = 1; //EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; //EPwm1Regs.ETSEL.bit.SOCAEN = 1;// EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_PRD; //COMPAR_B的下降沿启动ADC EPwm1Regs.ETPS.all = 0x0101; //EPwm1Regs.ETPS.bit.INTPRD = 1; //EPwm1Regs.ETPS.bit.SOCAPRD = 1; //每一事件启动一次AD
2、ADC 终端配置
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1;// AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // Enable SEQ1 interrupt (every EOS)
3、ADC中断函数
isradc(){
ADCcaculate();//ADC中断里面的运算函数 // Reinitialize for next ADC sequence AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1 AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge this interrupt
}
isradc()函数是ADC中断函数,在进入isradc前,是否ADC的结果寄存器都更行了