我用280039C做ADC采样时,采用CPUTIMER 100KHz频率触发,ADCA 2分频且14个通道连续检测9次。发现在ADC中断终读多个检测结果时会影响中断速度,如果至读三个结果速度正常。程序初始化是由syscfg配置,中断执行代码如下,按照120MHz的主频速度,不会中断里连几行代码执行速度都会影响中断吧,麻烦帮我解答一下。
// Interrupt Settings for INT_ADC_1_1
__interrupt void INT_ADC_1_1_ISR(void)
{
if(io ==0)
io =1;
else
io =0;
inv2l_output_enable(io);
//
// Add the latest result to the buffer
//
adc1_result[0] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER0);
adc1_result[1] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER1);
adc1_result[2] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER2);
adc1_result[3] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER3);
adc1_result[4] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER4);
adc1_result[5] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER5);
adc1_result[6] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER6);
adc1_result[7] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER7);
adc1_result[8] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER8);
adc1_result[9] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER9);
adc1_result[10] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER10);
adc1_result[11] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER11);
adc1_result[12] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER12);
adc1_result[13] = ADC_readResult(ADCARESULT_BASE, ADC_SOC_NUMBER14);
//adc2_result[0] = ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER0);
//adc2_result[1] = ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER2);
//adc2_result[2] = ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER3);
//adc2_result[3] = ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER4);
//adc2_result[4] = ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER5);
//adc2_result[5] = ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER11);
//adc2_result[6] = ADC_readResult(ADCBRESULT_BASE, ADC_SOC_NUMBER12);
//
// Clear the interrupt flag
//
ADC_clearInterruptStatus(ADC_1_BASE, ADC_INT_NUMBER1);
//
// Check if overflow has occurred
//
if(true == ADC_getInterruptOverflowStatus(ADC_1_BASE, ADC_INT_NUMBER1))
{
ADC_clearInterruptOverflowStatus(ADC_1_BASE, ADC_INT_NUMBER1);
ADC_clearInterruptStatus(ADC_1_BASE, ADC_INT_NUMBER1);
}
Interrupt_clearACKGroup(INT_ADC_1_1_INTERRUPT_ACK_GROUP);
}