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.

F28035 ADCINT1触发CLA任务1问题

Other Parts Discussed in Thread: C2000WARE

1、为什么我在实验时候,F28035 用ADCINT1触发CLA任务,配置了ADC和PWM,最后配置CLA,任务运行不了自动进入 下面这个默认中断

__interrupt void rsvd_ISR(void) // For test
{
__asm (" ESTOP0");
for(;;);
}

2、不用ADC触发,软件触发CLA,都能正常运行;但是在配置最后,屏蔽了CLA的任务完成中断,也会运行不了CLA任务,如下。

// PieCtrlRegs.PIEIER11.all = 0xFFFF;
// IER = (M_INT11 );

3、将 IER = (M_INT11 ); 改为IER |= (M_INT11); 也会运行不了CLA任务。

  • ADC转换完成,触发CLA任务,该怎么配置ADC呢?必须在ADC中断函数里面清除ADC中断标志吗,我都试过,都运行不了
    我是这样的:
    __interrupt void ADC_CLAISR(void)
    {
    EALLOW;
    PieCtrlRegs.PIEACK.bit.ACK10 = 1; // Acknowledge interrupt to PIE
    EDIS;
    AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//Clear ADCINT1 flag reinitialize for next SOC
    }

    void ADC_CONFIG_SET(void)
    {
    ChSel[0] = 4;
    ChSel[1] = 4;
    ChSel[2] = 1;
    ChSel[3] = 3;
    ChSel[4] = 7;
    ChSel[5] = 6;
    ChSel[6] = 2;

    TrigSel[0] = ADCTRIG_EPWM1_SOCA;
    TrigSel[1] = ADCTRIG_EPWM1_SOCA;
    TrigSel[2] = ADCTRIG_EPWM1_SOCA;
    TrigSel[3] = ADCTRIG_EPWM1_SOCA;
    TrigSel[4] = ADCTRIG_EPWM1_SOCA;
    TrigSel[5] = ADCTRIG_EPWM1_SOCA;
    TrigSel[6] = ADCTRIG_EPWM1_SOCA;

    EPwm1Regs.ETSEL.bit.SOCAEN = 1;
    EPwm1Regs.ETSEL.bit.SOCASEL = ET_CTR_ZERO;
    EPwm1Regs.ETPS.bit.SOCAPRD = ET_1ST;

    }

    void ADC_SOC_CNF(int ChSel[], int Trigsel[], int ACQPS[])
    {
    EALLOW;
    AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; //Ref Int
    AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; // Power up band gap
    AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; // Power up reference
    AdcRegs.ADCCTL1.bit.ADCPWDN = 1; // Power up rest of ADC
    AdcRegs.ADCCTL1.bit.ADCENABLE = 1; // Enable ADC

    DSP28x_usDelay(1000); // Delay before converting ADC channels

    AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; //ADCINT1 trips after AdcResults latch
    AdcRegs.INTSEL1N2.bit.INT1E = 1; //Enabled ADCINT1
    AdcRegs.INTSEL1N2.bit.INT1CONT = 0; //Disable ADCINT1 Continuous mode,single conversion mode
    AdcRegs.INTSEL1N2.bit.INT1SEL = 6; //setup EOC6 to trigger ADCINT1 to fire

    AdcRegs.ADCSOC0CTL.bit.ACQPS = ACQPS[0];
    AdcRegs.ADCSOC1CTL.bit.ACQPS = ACQPS[1];
    AdcRegs.ADCSOC2CTL.bit.ACQPS = ACQPS[2];
    AdcRegs.ADCSOC3CTL.bit.ACQPS = ACQPS[3];
    AdcRegs.ADCSOC4CTL.bit.ACQPS = ACQPS[4];
    AdcRegs.ADCSOC5CTL.bit.ACQPS = ACQPS[5];
    AdcRegs.ADCSOC6CTL.bit.ACQPS = ACQPS[6];
    AdcRegs.ADCSOC7CTL.bit.ACQPS = ACQPS[7];
    AdcRegs.ADCSOC8CTL.bit.ACQPS = ACQPS[8];
    AdcRegs.ADCSOC9CTL.bit.ACQPS = ACQPS[9];
    AdcRegs.ADCSOC10CTL.bit.ACQPS = ACQPS[10];
    AdcRegs.ADCSOC11CTL.bit.ACQPS = ACQPS[11];
    AdcRegs.ADCSOC12CTL.bit.ACQPS = ACQPS[12];
    AdcRegs.ADCSOC13CTL.bit.ACQPS = ACQPS[13];
    AdcRegs.ADCSOC14CTL.bit.ACQPS = ACQPS[14];
    AdcRegs.ADCSOC15CTL.bit.ACQPS = ACQPS[15];

    // Select the channel to be converted when SOCx is received
    AdcRegs.ADCSOC0CTL.bit.CHSEL= ChSel[0];
    AdcRegs.ADCSOC1CTL.bit.CHSEL= ChSel[1];
    AdcRegs.ADCSOC2CTL.bit.CHSEL= ChSel[2];
    AdcRegs.ADCSOC3CTL.bit.CHSEL= ChSel[3];
    AdcRegs.ADCSOC4CTL.bit.CHSEL= ChSel[4];
    AdcRegs.ADCSOC5CTL.bit.CHSEL= ChSel[5];
    AdcRegs.ADCSOC6CTL.bit.CHSEL= ChSel[6];
    AdcRegs.ADCSOC7CTL.bit.CHSEL= ChSel[7];
    AdcRegs.ADCSOC8CTL.bit.CHSEL= ChSel[8];
    AdcRegs.ADCSOC9CTL.bit.CHSEL= ChSel[9];
    AdcRegs.ADCSOC10CTL.bit.CHSEL= ChSel[10];
    AdcRegs.ADCSOC11CTL.bit.CHSEL= ChSel[11];
    AdcRegs.ADCSOC12CTL.bit.CHSEL= ChSel[12];
    AdcRegs.ADCSOC13CTL.bit.CHSEL= ChSel[13];
    AdcRegs.ADCSOC14CTL.bit.CHSEL= ChSel[14];
    AdcRegs.ADCSOC15CTL.bit.CHSEL= ChSel[15];

    AdcRegs.ADCSOC0CTL.bit.TRIGSEL= Trigsel[0];
    AdcRegs.ADCSOC1CTL.bit.TRIGSEL= Trigsel[1];
    AdcRegs.ADCSOC2CTL.bit.TRIGSEL= Trigsel[2];
    AdcRegs.ADCSOC3CTL.bit.TRIGSEL= Trigsel[3];
    AdcRegs.ADCSOC4CTL.bit.TRIGSEL= Trigsel[4];
    AdcRegs.ADCSOC5CTL.bit.TRIGSEL= Trigsel[5];
    AdcRegs.ADCSOC6CTL.bit.TRIGSEL= Trigsel[6];
    AdcRegs.ADCSOC7CTL.bit.TRIGSEL= Trigsel[7];
    AdcRegs.ADCSOC8CTL.bit.TRIGSEL= Trigsel[8];
    AdcRegs.ADCSOC9CTL.bit.TRIGSEL= Trigsel[9];
    AdcRegs.ADCSOC10CTL.bit.TRIGSEL= Trigsel[10];
    AdcRegs.ADCSOC11CTL.bit.TRIGSEL= Trigsel[11];
    AdcRegs.ADCSOC12CTL.bit.TRIGSEL= Trigsel[12];
    AdcRegs.ADCSOC13CTL.bit.TRIGSEL= Trigsel[13];
    AdcRegs.ADCSOC14CTL.bit.TRIGSEL= Trigsel[14];
    AdcRegs.ADCSOC15CTL.bit.TRIGSEL= Trigsel[15];
    EDIS;

    //AdcRegs.ADCSOCFRC1.all = 0xFFFF; // kick-start ADC

    DELAY_US(1000);
    EALLOW;
    AdcRegs.ADCINTFLG.bit.ADCINT1 = 0;
    EDIS;
    PieCtrlRegs.PIEIER10.bit.INTx1 = 1; // Enable INT 10.3 in the PIE
    IER |= M_INT10; // Enable CPU Interrupt 10


    EALLOW;
    PieVectTable.ADCINT1 = &ADC_CLAISR; // AD中断函数映射
    EDIS;

    }
  • 可以参考例程的配置
    C:\ti\c2000\C2000Ware_1_00_05_00\device_support\f2803x\examples\c28\cla_adc
x 出现错误。请重试或与管理员联系。