This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28335 ADC 中断问题

请问下,28335用EPWM模块触发的ADC中断,是采样完成后才进入到ADC中断吗?在哪里有详细的描述

  • 请问下,28335用EPWM模块触发的ADC中断,是采样完成后才进入到ADC中断吗?在哪里有详细的描述

    ERIC:PWM触发ADC开始转换,一般来讲,会配置ADC转换完成之后产生ADC中断。看你程序中如何去配置中断。具体的描述你可以看一下ADC的user guide.


  • 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的结果寄存器都更行了