18f2550 adc a0 a1 a2 a3

Başlatan pathetic, 03 Mayıs 2012, 08:29:41

pathetic

Selam,
2550'de sadece bu pinleri adc olarak 5v referansı ile kullanmak için ne yazmak gerekiyor. an8 an9 an10 pinlerim müsait olmadığı için all_analog yapamıyorum. Bir türlü sonuç alamadım denediklerimden.

setup_adc_ports( ???? );


skara1214

Herkes ölür ama herkes gerçekten yaşamaz

pathetic

teşekkürler evet bu şekilde bir sorun gözükmüyor teşekkür ederim :)

bilginer

Arkadaslar ben de benzer bir soru soracaktim. yeni baslik acmak yerine buraya yazsam daha uygun olur galiba.

16f819 soic kullaniyorum,
A0 A1 A6 A7 portlarini 3310 lcd'ye ayirmistim dolayisyla bana lazim.
A2 A3 A4 portlarini ise adc olarak kullanmak istedim. fakat bunu basaramadim.

ki sadece test amacli olarak bile yukarida arkadasin soyledigi gibi yapsam dahi
"undefined identifier AN2_AN3_AN4" hata iletisini veriyor.
fakat ccs c de otomatik kod tamamlama ile gelen degerleri yaziyorum hata yok.

mesela AN0 yazarsam hata yok fakat AN1 yazarsam hata veriyor.

bana sadece A2 A3 A4 lazim.

ben nerede yanlislik yapiyorum.

saygilarimla.



void main()
{
   int16 adc_val;
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports();
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_oscillator(OSC_8MHZ);
   // LOAD LCD
   nokia_init();
   nokia_gotoxy(0,0);
   printf(nokia_printchar,"TEST MODE!");

 
  while(true){
 
      set_adc_channel(2);
      delay_us(10);
      adc_val = read_adc();
      nokia_gotoxy(0,2);
      printf(nokia_printchar,adc_val);
     
   }
}


skara1214

senin istediğin gibi hazır bir tanımlama yok hiç hazır kütüphane kullanmadan registerleri kendin ayarlayarak yapabilirsin anca
Herkes ölür ama herkes gerçekten yaşamaz

bilginer

evet ya siz cevap yazmadan once farkettim. acemilik iste .. peki register degerini nasil buluyoruz?


1110 = 0x0E  = D D D D A (Yanlizca A0 Analog)
oluyorsa
AAADD
ne olur neye gore hesaplanir?

1110 ve 0x0E gibi karsiliklar nasil bulunuyor?

bu konuda biraz fikir verebilirmisiniz.

skara1214

ccs c de söyle bir sıkıntı varki bir ayarlamayı kendin yap diğer ayarlamayı ccs den hazır kullan yok en azından ben bulamadım 33 f lerin adc lerinde hepsini kendim yazmam gerekti.Microchipin application notlarından adc ile ilgili olanı bul orada hangi registerleri ayarlaman gerektiği yazar...
Herkes ölür ama herkes gerçekten yaşamaz

bilginer

Manualde
REGISTER 11-2: ADCON1: A/D CONTROL REGISTER 1 (ADDRESS 9Fh)
basliginda gerekli aciklamalar yapilmis ama ben konulari ilk defa goruyorum. pek bisey de anlamadim dogrusu.
galiba ogrenmenin de bir sirasi var ve once pic'in yapisindan baslamak gerekiyormus demekki. akademik egitim sart. :))

en azindan sorunu anladim.
su register bit olayini iyce bi anlamaya calisayim.

yardiminiz icin cok tesekkur ederim.

JKramer

Alıntı yapılan: bilginer - 03 Mayıs 2012, 12:22:30
Arkadaslar ben de benzer bir soru soracaktim. yeni baslik acmak yerine buraya yazsam daha uygun olur galiba.

16f819 soic kullaniyorum,
A0 A1 A6 A7 portlarini 3310 lcd'ye ayirmistim dolayisyla bana lazim.
A2 A3 A4 portlarini ise adc olarak kullanmak istedim. fakat bunu basaramadim.

ki sadece test amacli olarak bile yukarida arkadasin soyledigi gibi yapsam dahi
"undefined identifier AN2_AN3_AN4" hata iletisini veriyor.
fakat ccs c de otomatik kod tamamlama ile gelen degerleri yaziyorum hata yok.

mesela AN0 yazarsam hata yok fakat AN1 yazarsam hata veriyor.

bana sadece A2 A3 A4 lazim.

ben nerede yanlislik yapiyorum.

saygilarimla.



void main()
{
   int16 adc_val;
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports();
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_oscillator(OSC_8MHZ);
   // LOAD LCD
   nokia_init();
   nokia_gotoxy(0,0);
   printf(nokia_printchar,"TEST MODE!");

 
  while(true){
 
      set_adc_channel(2);
      delay_us(10);
      adc_val = read_adc();
      nokia_gotoxy(0,2);
      printf(nokia_printchar,adc_val);
     
   }
}

Katalog 82. sayfada "A/D Port Configuration Control bits" adında bir tablo var. Orada pin'lerin analog-dijital olmalarıyla ilgili kombinasyonlar verilmiş. Sizin istediğiniz (0,1 dijital 2,3,4 analog) şekilde olamaz.

Bunun dışında sleep modunda adc modülünü kullanmayacaksanız -kodunuzda kullanmadığınız görülüyor- clock değerini ( setup_adc(ADC_CLOCK_INTERNAL); ) uygun değere ayarlamalısınız.

bilginer

#9
Tanimli "A/D Port Configuration Control bits" lerinden baska bisey tanimlayamiyormusuz. iste ben bunu bilmiyordum. :)

yapacak bisey yok. tanimli adc portlarini hesaba katip yeni bir devre yaparim.

JKramer yardimlarindan oturu cok tesekkur ederim.