Bu komutları açıklar mısınız lütfen?

Başlatan Okan12345, 22 Şubat 2014, 16:09:44

Okan12345

Aşağıdakılar Analog Digital çeviriye aiddir.
Adcon1 registeri nedir?
A/D sonuç format seçme biti nedir?
Adresh Adresl nedir?

Bak: If Adcon0.2=1 Then Bak    'Cevirme işlemi tamamlanınca Adcon0.2=0 olacak
Bu komut ne içindir?
Çevirme işlemi nedir?

Lütfen bunları basit bir şekilde sanki Birinci sınıf öğrencisine anlatır gibi anlatırmısınız?

z

#1
Eger islemcilerle ugrasmaya yeni basladi isen takip ettigin yol yanlis.

Sorularin anlamli ama bu sekilde sistematik ilerleyemezsin.

Islemci daha dogrusu mikrodenetleyici icierisinde pek cok cevre birimi var.

Bunlardan birisi de ADC.

ADC analog voltaji digital degere cevirir.  Eger islemcin 8 bit fakat ADC 8 bitden daha buyukse ADC sonuclari iki ayri registere yerlesir. Bunlardan birisine AdresH denmistir.

16 bitten daha kisa uzunlukta bir sonuc isterse saga isterse sola dayali yazilabilir. Ornegin

10 bitlik ADC sonucunda elde edilen 0x03FF degeri istenirse 0x03FF istenirse 0xFFC0 olarak okunabilir. Bu sonucun saga dayali formatta mi yoksa sola dayali formatta mi olacagini biz belirleriz. Bunu da bir registerin bir bitinden ayarlariz.

Kendine herhangi bir firmanin herhangi bir islemcisini sec. Cok karmasik bir sey olmasin.

Bu islemci ile yapilmis bir kit yap yada hazirini satin al.

Daha sonra bu cipin dokumanini temin et.

Her bir cevre biriminin registerlerini anlatan bolumleri ac ve bu registerin bitlerinin ne anlama geldigini ogren. Bunun icin anlayamadigin yerde kucuk bir kod parcasi ile deneme yap. Olmadi burada sor.

Temel mantigi anladiginda herhangi bir cipi aldiginda temelde pek cok seyin prensipte ayni oldugunu, sadece registerlerin adlarinin degistigini, ilave ozellikler geldigini, register bitlerinin isimlerinin ve yerlerinin degistigini goreceksin.



Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Okan12345

Alıntı yapılan: z - 22 Şubat 2014, 17:07:47
Eger islemcilerle ugrasmaya yeni basladi isen takip ettigin yol yanlis.

Sorularin anlamli ama bu sekilde sistematik ilerleyemezsin.

Islemci daha dogrusu mikrodenetleyici icierisinde pek cok cevre birimi var.

Bunlardan birisi de ADC.

ADC analog voltaji digital degere cevirir.  Eger islemcin 8 bit fakat ADC 8 bitden daha buyukse ADC sonuclari iki ayri registere yerlesir. Bunlardan birisine AdresH denmistir.

16 bitten daha kisa uzunlukta bir sonuc isterse saga isterse sola dayali yazilabilir. Ornegin

10 bitlik ADC sonucunda elde edilen 0x03FF degeri istenirse 0x03FF istenirse 0xFFC0 olarak okunabilir. Bu sonucun saga dayali formatta mi yoksa sola dayali formatta mi olacagini biz belirleriz. Bunu da bir registerin bir bitinden ayarlariz.

Kendine herhangi bir firmanin herhangi bir islemcisini sec. Cok karmasik bir sey olmasin.

Bu islemci ile yapilmis bir kit yap yada hazirini satin al.

Daha sonra bu cipin dokumanini temin et.

Her bir cevre biriminin registerlerini anlatan bolumleri ac ve bu registerin bitlerinin ne anlama geldigini ogren. Bunun icin anlayamadigin yerde kucuk bir kod parcasi ile deneme yap. Olmadi burada sor.

Temel mantigi anladiginda herhangi bir cipi aldiginda temelde pek cok seyin prensipte ayni oldugunu, sadece registerlerin adlarinin degistigini, ilave ozellikler geldigini, register bitlerinin isimlerinin ve yerlerinin degistigini goreceksin.
Çok teşekkür ederim bilgiler için.

Peki aşağıdakı komutu açıklarmısını? Bu komut ne işe yarıyor?

Bak: If Adcon0.2=1 Then Bak    'Cevirme işlemi tamamlanınca Adcon0.2=0 olacak

drmp

A/D çevirici çevirme işlemini bitirince  ADCON0.2 >> 0 olacak  eğer 1 ise hala çevirme devam ediyor ne zaman ki  çevirme bitti  o zaman 0 olacak    senin işlemci  bu süre zarfında  yüzlerce kez  binlerce kez  o biti  okuyacak   bakacak ki  0 olmuş  işte o zaman  sonraki komutlara geçecek  , eğer adcon0.2   >> 1  ise bak etiketine git   bi  daha oku   

assemply  tarzında  bir yazım olmuş    while  komutunu da incele  yapılmak isteneni daha iyi anlarsın

Okan12345

Yani Çevirme işlemi derken kondansatörün deşarj süresidir dimi? Yanı tamamen deşarj olunca Adcon0.2=1 olacak öylemi?  Ayrıca bu 0.2 nedir? Portmudur?
Birde Adcon0.2 komutunu kaldırarak proteusda deniyorum hiçbir değişiklik gözlemlemedim.

olemiss

> Yani Çevirme işlemi derken kondansatörün deşarj süresidir di mi? Yanı tamamen deşarj olunca Adcon0.2=1 olacak öyle mi? 

Sorduğun soru programlama sorusu değil, hardware sorusu.  Soruya, ilgili arabirime ne tür bir cihaz bağlı ise, ancak ona göre cevap verilebilir.

Programın bildiği tek şek, söz konusu bitin 0 mı 1 mi olduğu.

> Ayrıca bu 0.2 nedir? Port mudur?

PC'lerdeki port anlamında fiziksel bir port değil.  ADCON0 çevirici yan birimi ile haberleşmeyi sağlayan adres.  ".2" ise bu adresin 2'inci biti.


Yazılım Mühendisi, Çevirmen.

Okan12345

Ha anlaşıldı yani ben hem donanım kısmını soruyorum hemde yazılım kısmını yani katıp karıştırıyorum.
Bilmem gereken o ki bu komutu Adcin 0, Ham komutunun aşağısında mutlaka kullanmalıyım öylemi?

olemiss

Tüm programı yazmadın, "Adcin 0, Ham" satırını ise ilk defa gösteriyorsun.  Ben bu şekilde yardımcı olamayacağım, belki başka birisi yardım edebilir. 

Şu kadarını söyleyeyim: "Adcin 0, Ham" satırından sonra mutlaka "If Adcon0.2=1 Then Bak" satırı gelir... şeklinde kurallar dizisine dayalı bir yöntemle öğrenmen çok uzun sürer (ki zaten böyle bir yöntem yok).
Yazılım Mühendisi, Çevirmen.

mg1980

Sayın Okan12345,
etepic.com'da Ete hocanın ders notlarına bakabilirseniz daha ayrıntı bulabilirsiniz.

ete

Bir adc yani anolg bilginin digitale çevrilme işlemi bir süreçtir. Bu işin kondansatörün şarjınyada deşarjı ile yapılıp yapılmadığı bu aşamada seni fazla ilgilendirmiyor. Sen işleme bak ve işlemin bir başlangıcı ve birde bitişi olduğunu hatırla.
Adcon0 8 bitlik bir işlemci registeridir. Bu registerin bitlerini kullanarak işlemci bir takım şeylere karar verir. Bunlardan 2 nolu bit bir adc çevirim işinin bitip bitmediği konusunda bilgi veriyor. İşlem sürdüğü müddetçe bu 2 nolu bit high da bekliyor ve işlem tamamlanınca otomatikman 2 nolu bit sıfır oluyor buradan adc çevriminin hazır olduğunu anlıyoruz.
Aslında basic bu işi otomatik yapmaktadır. Yani bu komutu kullanman gerekmiyor. Önceleri pek çok kişi gibi bende o bitin sıfır olup olmadığına bakıyordum. Ama sonradan öğrendimki basıc bu işi zaten yapıyormuş. Sonrasında ilgili bitin sıfır olup olmadığına bakmadım bir daha. Sende bakma zaten fark etmişsin komutu kullanmakla kullanmamak arasında bir fark yok.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Okan12345

Alıntı yapılan: ete - 24 Şubat 2014, 08:25:35
Bir adc yani anolg bilginin digitale çevrilme işlemi bir süreçtir. Bu işin kondansatörün şarjınyada deşarjı ile yapılıp yapılmadığı bu aşamada seni fazla ilgilendirmiyor. Sen işleme bak ve işlemin bir başlangıcı ve birde bitişi olduğunu hatırla.
Adcon0 8 bitlik bir işlemci registeridir. Bu registerin bitlerini kullanarak işlemci bir takım şeylere karar verir. Bunlardan 2 nolu bit bir adc çevirim işinin bitip bitmediği konusunda bilgi veriyor. İşlem sürdüğü müddetçe bu 2 nolu bit high da bekliyor ve işlem tamamlanınca otomatikman 2 nolu bit sıfır oluyor buradan adc çevriminin hazır olduğunu anlıyoruz.
Aslında basic bu işi otomatik yapmaktadır. Yani bu komutu kullanman gerekmiyor. Önceleri pek çok kişi gibi bende o bitin sıfır olup olmadığına bakıyordum. Ama sonradan öğrendimki basıc bu işi zaten yapıyormuş. Sonrasında ilgili bitin sıfır olup olmadığına bakmadım bir daha. Sende bakma zaten fark etmişsin komutu kullanmakla kullanmamak arasında bir fark yok.
Ete

Şimdi anlaşıldı hocam çok teşekkür ederim ALLAH razı olsun.  Diğer arkadaşlarda çok teşekkür ederim çok sağ olun.