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.

28035 最后两个采样通道结果寄存器值始终为0



如题,代码如下:

void ADC_Config(void)

{
InitAdc(); // For this example, init the ADC

EALLOW; // This is needed to write to EALLOW protected register
PieVectTable.ADCINT3 = &adc_isr;
EDIS; // This is needed to disable write to EALLOW protected registers

PieCtrlRegs.PIEIER10.bit.INTx3 = 1; // Enable INT 10.3 in the PIE
IER |= M_INT10; // Enable CPU Interrupt 10

// Configure ADC
EALLOW;

AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; //REF Int
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; //ADCINT1 trips after AdcResults latch
AdcRegs.INTSEL3N4.bit.INT3E = 1; //Enabled ADCINT3
AdcRegs.INTSEL3N4.bit.INT3CONT = 0; //Disable ADCINT3 Continuous mode,single conversion mode
AdcRegs.INTSEL3N4.bit.INT3SEL = 3; //setup EOC3 to trigger ADCINT3 to fire

AdcRegs.ADCSAMPLEMODE.bit.SIMULEN0=0; //SOC0,SOC1 SEQUENTIAL Sampling Enable
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN2=0; //SOC2,SOC3 SEQUENTIAL Sampling Enable
AdcRegs.ADCSAMPLEMODE.bit.SIMULEN4=0; //SOC2,SOC3 SEQUENTIAL Sampling Enable

AdcRegs.ADCSOC0CTL.bit.CHSEL = 0; //SOC0 ADCINA0
AdcRegs.ADCSOC1CTL.bit.CHSEL = 8; //SOC1 ADCINB0
AdcRegs.ADCSOC2CTL.bit.CHSEL = 1; //SOC2 ADCINA1
AdcRegs.ADCSOC3CTL.bit.CHSEL = 0; //SOC3 ADCINA0
AdcRegs.ADCSOC4CTL.bit.CHSEL = 0; //SOC4 ADCINA0
AdcRegs.ADCSOC5CTL.bit.CHSEL = 0; //SOC5 ADCINA0

//AD选择触发源,软件触发 P34
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0x00; //ADCTRIG0- Software only
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0x00; //ADCTRIG0- Software only
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 0x00; //ADCTRIG0- Software only
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 0x00; //ADCTRIG0- Software only
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 0x00; //ADCTRIG0- Software only
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 0x00; //ADCTRIG0- Software only

AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC1CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC2CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC3CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC4CTL.bit.ACQPS = 6;
AdcRegs.ADCSOC5CTL.bit.ACQPS = 6;
EDIS;
}

//-------------------------------------------------------------------------
//AD 中断处理函数
//
//##########################################################################
interrupt void adc_isr(void)
{
EALLOW;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP10; // Acknowledge interrupt to PIE
EDIS;

AdcRegs.ADCINTFLGCLR.bit.ADCINT3 = 1; //Clear ADCINT1 flag reinitialize for next SOC
}

仿真结果见附件。

如果把PieVectTable.ADCINT3 = &adc_isr换成PieVectTable.ADCINT5 = &adc_isr,则不进入中断了;