سلام
برای کار با تبدیل آنالوگ به دیجیتال به مشکل خوردم. می خوام مقدار 5 تا سنسور رو بخونم. ولی از کد ویزارد فقط می شه 4 تا پین رو تنظیم کرد. یعنی برای هر کانال یه پین.
قبل از اینکه من رو متهم کنید که محدود به کدویزاردم بگم که با رجیستر هاشم کار کردم
یعنی رجیستر مالتی پلکسر اون کانالی که باهاش کار می کردم رو عوض کردم. وقتی یه بار این کار رو اول برنامه می کنم درست کار می کنه. یعنی عوض می شه.
اما وقتی داخل برنامه این کار رو می کنم که هر سیکل پینی که خونده می شه عوض شه. درست کار نمی کنه یعنی هر دو تا مقداری که می خونه برای یه کانال هستن و با هم یکی هستن.
تنظیمات کدویزارد و برنامه رو این زیر میارم:
برای کار با تبدیل آنالوگ به دیجیتال به مشکل خوردم. می خوام مقدار 5 تا سنسور رو بخونم. ولی از کد ویزارد فقط می شه 4 تا پین رو تنظیم کرد. یعنی برای هر کانال یه پین.
قبل از اینکه من رو متهم کنید که محدود به کدویزاردم بگم که با رجیستر هاشم کار کردم

اما وقتی داخل برنامه این کار رو می کنم که هر سیکل پینی که خونده می شه عوض شه. درست کار نمی کنه یعنی هر دو تا مقداری که می خونه برای یه کانال هستن و با هم یکی هستن.
تنظیمات کدویزارد و برنامه رو این زیر میارم:
ADC clock frequency: 62.5 khz
adc resolution: 12 bit
adc conversion mode: unsigned
adc refrence: Aref pin on port B
conversion start mode: channels trigged by software
input mode: single ended positive inout signal
while (1)
{
lcd_clear();
for (i=0;i<4;i++)
as[i]=adcb_read(i);
if (temp)
{
ADCB.CH3.MUXCTRL=ADCB.CH3.MUXCTRL | ADC_CH_MUXPOS_PIN7_gc;
as2[0]=as[3];
}
else
{
ADCB.CH3.MUXCTRL=ADCB.CH3.MUXCTRL | ADC_CH_MUXPOS_PIN3_gc;
as2[1]=as[3];
}
temp=!temp;
lcd_gotoxy(15,0);
lcd_putchar(temp+48);
itoa(as[0],a);
lcd_gotoxy(0,0);
lcd_puts(a);
itoa(as[1],a);
lcd_gotoxy(6,0);
lcd_puts(a);
itoa(as[2],a);
lcd_gotoxy(0,1);
lcd_puts(a);
itoa(as2[0],a);
lcd_gotoxy(6,1);
lcd_puts(a);
itoa(as2[1],a);
lcd_gotoxy(11,1);
lcd_puts(a);
delay_ms(150);
}
}
adc resolution: 12 bit
adc conversion mode: unsigned
adc refrence: Aref pin on port B
conversion start mode: channels trigged by software
input mode: single ended positive inout signal
while (1)
{
lcd_clear();
for (i=0;i<4;i++)
as[i]=adcb_read(i);
if (temp)
{
ADCB.CH3.MUXCTRL=ADCB.CH3.MUXCTRL | ADC_CH_MUXPOS_PIN7_gc;
as2[0]=as[3];
}
else
{
ADCB.CH3.MUXCTRL=ADCB.CH3.MUXCTRL | ADC_CH_MUXPOS_PIN3_gc;
as2[1]=as[3];
}
temp=!temp;
lcd_gotoxy(15,0);
lcd_putchar(temp+48);
itoa(as[0],a);
lcd_gotoxy(0,0);
lcd_puts(a);
itoa(as[1],a);
lcd_gotoxy(6,0);
lcd_puts(a);
itoa(as[2],a);
lcd_gotoxy(0,1);
lcd_puts(a);
itoa(as2[0],a);
lcd_gotoxy(6,1);
lcd_puts(a);
itoa(as2[1],a);
lcd_gotoxy(11,1);
lcd_puts(a);
delay_ms(150);
}
}
دیدگاه