程序如下
SD16CTL |= (SD16REFON+SD16VMIDON); //开启内部基准源,开启输出缓冲器
SD16CTL |= SD16SSEL_1+SD16DIV_3; //设置ADC时钟SMCLK/8(524KHz)
delay(10);
SD16CCTL0 |= SD16BUF_1+SD16IE+SD16DF; //有符号(双极性) enable interrupt //---------------------------------------------------------------------------
SD16INCTL0 |=SD16GAIN_2+SD16INCH_7; //设置新的通道号7,采样基准电平 //--------------------------------------------------------------------------
SD16CCTL0 |=SD16SC;//开始采样
while(!(SD16CCTL0&SD16IFG));
offset=SD16MEM0;//
SD16INCTL0 |=SD16INCH_3;//SD16INCH_0;
SD16CCTL0 |=SD16SC;//开始采样
#pragma vector=SD16A_VECTOR
__interrupt void SD16AISR (void)
{
_NOP();
_NOP();
switch(__even_in_range(SD16IV,4))
{
case 2:
break;
case 4:
adcwrite[index++] =SD16MEM0-offset;
SD16CTL &=~(SD16VMIDON + SD16REFON);//关掉基准源
break;
}
adcwrite[]中的数是FFF9,FFF8,FFFA,FFFD,FFF6,....
测试输入电平70mV,不知道问题出哪里了 |