PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشكل با adc



a.amir
13-01-2012, 13:57
سلام
من با راه اندازي ADC 7s مشكل دارم.
هر كاري كه مي كنم خروجي رو 1024 ميدهد با اينكه از ولتاژ VREF هم كمتر ميدهم
قسمتي از كد:
config_adc(0x70);
start_adc();
a1=read_adc(4);
a2=read_adc(5);
a3=read_adc(6);
sprintf(str,"%d",a1);
tftlcd_gotoxy(1,11);
.
.
.

sadmonew
13-01-2012, 14:55
با سلام
دوست عزيز از كد زير براي راه اندازي ADC استفاده كنيد. اگه بازم جواب نداد و سوالي داشتيد در خدمتيم.


//ADC Sample (without interrupt) MCK=48MHz

unsigned char ad_channel; //adc channel
unsigned int adv; //value

//ADC setup
ad_channel =4;
//ADC: PRES=4->MCK/10 SHTIM =3 -> 4/4,8MHz=833ns STARTUP =11 ->20us
AT91C_BASE_ADC->ADC_MR = (3<24)|(11<<16)|(4<<8);
//enable channel and set PIN to ADCx function (no need to write PIO!!)
AT91C_BASE_ADC->ADC_CHER = (1<< ad_channel);
//start first conversion
AT91C_BASE_ADC->ADC_CR = AT91C_ADC_START;

while(1) //loop
{
...
//if data ready
if(AT91C_BASE_ADC->ADC_SR & (1 << ad_channel))
{
//read channel register and reset end of conversion (EOC)
adv = (unsigned int*)((AT91C_ADC_CDR0) + ad_channel);
//do whatever you want with ADC-value

//start next conversion
AT91C_BASE_ADC->ADC_CR = AT91C_ADC_START;
}
} //end loop

و يادتون نره كه پايه ADVREF رو به ولتاژ 3.3V وصل كنيد.