|
我在中断中作一次采样的时候,结果还算正常,但是转换8次再平均的时候,
发现都不准确了,是不是我在处理数据的时候,有问题???
麻烦你再帮我看看~~
仅作一次采样的时候:
void interrupt int1(void)
{
unsigned int jj;
*EVBIFRB = *EVBIFRB & 0x0001;
switch(*PIVR)
{
case 0x0004: /*ADC interrupt*/
{
asm(\" clrc SXM\";
for(jj=0;jj<8;jj++)
adc_result[jj]=*(RESULT0+jj)>>6;
break;
}
default:
;
}
*ADCTRL2|=0x4200;
asm(\" CLRC INTM\";
}
8通道8次采样:
。。。。
{
asm(\" clrc SXM\";
for(i=0;i<8;i++)
{
*ADCTRL2&=0XBFFF;
*ADCTRL2|=0X2000;
for(j=0;j<8;j++)
adc_res[i,j]=*(RESULT0+j)>>6;
}
break;
}
default:
;
}
for(m=0;m<8;m++)
{
adc_result[0]=adc_result[0]+adc_res[m,0];
adc_result[1]=adc_result[1]+adc_res[m,1];
adc_result[2]=adc_result[2]+adc_res[m,2];
adc_result[3]=adc_result[3]+adc_res[m,3];
adc_result[4]=adc_result[4]+adc_res[m,4];
adc_result[5]=adc_result[5]+adc_res[m,5];
adc_result[6]=adc_result[6]+adc_res[m,6];
adc_result[7]=adc_result[7]+adc_res[m,7];
}
for(n=0;n<8;n++)
adc_result[n]=adc_result[n]>>3; |
|