TI中文支持网
TI专业的中文技术问题搜集分享网站

F28035 ADCINT1触发CLA任务1问题

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任务。

user5089339:ADC转换完成,触发CLA任务,该怎么配置ADC呢?必须在ADC中断函数里面清除ADC中断标志吗,我都试过,都运行不了
我是这样的:
__interrupt void ADC_CLAISR(void)
{EALLOW;PieCtrlRegs.PIEACK.bit.ACK10 = 1;// Acknowledge interrupt to PIEEDIS;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 IntAdcRegs.ADCCTL1.bit.ADCBGPWD = 1; // Power up band gapAdcRegs.ADCCTL1.bit.ADCREFPWD = 1; // Power up referenceAdcRegs.ADCCTL1.bit.ADCPWDN= 1; // Power up rest of ADCAdcRegs.ADCCTL1.bit.ADCENABLE = 1; // Enable ADC
DSP28x_usDelay(1000);// Delay before converting ADC channels
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; //ADCINT1 trips after AdcResults latchAdcRegs.INTSEL1N2.bit.INT1E = 1;//Enabled ADCINT1AdcRegs.INTSEL1N2.bit.INT1CONT = 0;//Disable ADCINT1 Continuous mode,single conversion modeAdcRegs.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 receivedAdcRegs.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 PIEIER |= M_INT10;// Enable CPU Interrupt 10

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

}

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任务。

Aki Li:

回复 user5089339:

可以参考例程的配置
C:\ti\c2000\C2000Ware_1_00_05_00\device_support\f2803x\examples\c28\cla_adc

赞(0)
未经允许不得转载:TI中文支持网 » F28035 ADCINT1触发CLA任务1问题
分享到: 更多 (0)