Re: DIPIC33F的A/D转换问题
|
||||
---|---|---|---|---|
新會員
|
希望有高手指点一下迷津
發表於: 2007/10/13 17:32
|
|||
|
DIPIC33F的A/D转换问题
|
||||
---|---|---|---|---|
新會員
|
void ADC_init()
{ //unsigned int i=0; //AD1CON1 Register AD1CON1bits.SSRC= 7;//Sample Clock Source :Internal counter ends sampling //and starts conversion (auto-convert) AD1CON1bits.FORM= 0; //Data Output Format is int AD1CON1bits.AD12B = 1; //Select 12bit Operation Mode AD1CON1bits.ASAM= 0; //Sampling begins when SAMP bit is set //AD1CON2 Register AD1CON2bits.CSCNA = 1;// Scan Input for CH0+ during Sample A bit AD1CON2bits.VCFG= 0; AD1CON2bits.CHPS= 0; //CH0 are used AD1CON2bits.ALTS= 0; //Always uses channel input selects for Sample A AD1CON2bits.SMPI= 0;//3 ADC Channel is scanned //AD1CON3 Register AD1CON3bits.ADRC= 0; //ADC Clock is derived from Systems Clock AD1CON3bits.SAMC= 1; //Auto Sample Time is 1*TAD=0.4us AD1CON3bits.ADCS= 15; // ADC Conversion Clock Tad=Tcy*(ADCS+1)=(1/40M)*16 = 0.4us>0.333us(min TAD) // ADC Conversion Time for 12-bit Tc=14*Tad =5.6us //AD1CHS0 Register AD1CHS0bits.CH0NA=0; //Channel 0 negative input is VREF- // AD1PCFG Register //select AN0,AN1,AN2 as analog mode AD1PCFGH= 0XFFFF ; AD1PCFGL= 0XFFF8 ; //AD1CSS Register //Enable AN0,AN1,AN2 for channel scan AD1CSSH= 0X0000; AD1CSSL= 0X0007; //Clear the A/D interrupt flag bit IFS0bits.AD1IF = 0; //clear the A/D interrupt enable bit IEC0bits.AD1IE = 0; AD1CON1bits.ADON = 1; //Turn on the A/D converter } 以上是我的A/D初始化程序 我选择了12位的A/D转换器 选择AN0,AN1,AN2三个模拟端口 具体工作是对这三个端口不停的轮流采样, 且保存到各自的数组中去 但现在出现的问题是:进入采样时,没有按照AN0.AN1.AN2的顺序采 有时是先采AN2,有时又是先采AN1 这样的话我就无法正确保存每一路的数组数值
發表於: 2007/10/13 17:01
|
|||
|