ADC pininde 0V. dan büyük gerilim varsa okunsun istiyorum nasıl olacak?

Başlatan picmanya, 04 Temmuz 2010, 18:32:26

picmanya

pic'i adc pinine 0V. dan büyük bir voltaj gelirse hemen o pinin okuma yapılmasını istiyorum.
adc kullanmanın bu tür bir özelliği varmı?bunu yalnızca adc pinini kullanarak başarmak mümkünmü?

o adc pinini belirli sürelerde devamlı okumak veya o adc pinine uygulanacak bir donanımla extradan bir işlemci pinini daha kullanmak seçeneklerinin gözardı edilmesini istiyorum extradan pin kullanmadan ve yazılımda o kanalı belirli sürelerde sürekli okumadan düşünemediğim veya bilmediğim bir çözüm yolu varmı  onu öğrenmek istiyorum.


OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

radres


picmanya

bir yolu varsa bilmek istedim sadece bir işimde böyle bir uygulamaya çok ihtiyacım var.
uygulamada bir adc pini devamlı sıfırda duruyor bunu sıfır dediysem tam sıfırda olmayabilir tabiki burda sıfır kert veriyorsa bizim istediğimiz bir değerde diyelim buna daha doğru olur farzedelim pin normalde devamlı 0,5 voltda dursun bu voltajda ve bunun altında pin okunmasın ama voltaj 0,5 in üzerine çıktığında bu adc pini işlemci tarafından kesme olmuşçasına anında okunsun burda birkere okusa yetecek.

bu durumu işlemci üreticileri tek adc pini kullanılarak yapılmasını niye göz ardı etmişler acaba aslında böyle bir şey çok gerekli bunu düşünmemelerinin nedeni ne olabilir acaba işelmci denen şeyin mantığına aykırımı bu?

Tagli

Mümkün olabilir belki. Öncelikle o pini comparator girişi olarak ayarlaman gerekli. Eğer referans voltajını PIC'in içindeki modül ile ayarlayabiliyorsan sorun yok, ama bu yeterli gelmiyorsa harici bir referans voltajı girişine ihtiyacın olacak. Daha sonra comparator kesmesini bekleyeceksin. Kesme olunca comparator'ü kapatıp o pini A/D dönüşümü için kullanacaksın. Elbette bunun için o giriş voltajının bir süre orada kalması gerekir.
Gökçe Tağlıoğlu

rf

Anlamaya çalışıyorumda;
Sanırım mikroişlemci bacak sayısı sizin için önemli ek bir dijital girişe ayıracak pininiz bulunmuyor?

Main loop içerisinde ADC okuması yaparak eşik değeri geçip geçmediğine bakacak kadar işlemci zamanınız bulunmuyor?Bu süre microsaniyeler mertebesinde olcaktır ama olabilir.

Alıntı Yapbu adc pini işlemci tarafından kesme olmuşçasına anında okunsun burda birkere okusa yetecek.
???

Oluşmuşcasına derken ne kastettiniz donanımsal bir flag mi? software interrupt mı? Hardware Interrupt mı?
----------------------------------------------------------------------------------------------------
Yukarı kısım aslında sorunuzu anlamadığımı gösteriyor ama şöyle bir çözüm önerebilirim.

AN girişleri bir çok PIC işlemcisinde Comparator olarakta görev yapıyor. Bu giriş comparator olarak ayarlanarak ikinci girişe eşik değerinizi içeren analog giriş yapılarak bir interrupt durumu yaratılabilir. Interrupt geldiğinde AN girişi ADCye yönlendirip değeri okuyabilirsiniz.

Not: Çözüm önerisi aynı oldu kusura bakmayın ben mesajı yazarken ileti geldi. :(




KOSGEB Girişimcilik Desteği Bilgi ve Paylaşım Platformu http://www.girisimcilikdestegi.com/

picmanya

kullandığım işlemcimde adc girişlerinin komporatör olarak kullanıldığı bilgisini göremedim bunda komporatör yok sadece 10bit adc girişleri var.

adc girişi interrupt gelmiş gibi çalışsından kastım;
pic'in external kesme pinlerine ayarlandıklarında nasıl bir sinyal geldiğinde işlemci anında o pinin programdaki kesmesine gidiyorsa adc içinde pine sıfır volt veya yazılımsal ayarlayabiliyorsak ayarladığımız gerilimin üstünde bir gerilim geliyorsa hemen adc pininin okunması idi taki biz isteyerek okumadığımız sürece o pin tekrar sıfır volta veya ayarlı voltajın altına düşüp tekrar yükselene kadar.

öncelikle işlemcideki pinden ziyade sahada gelen kablo üzerinde ilave bir hat bulunmuyor blendajını bile kartın beslendiği şaseyi taşımak için kullandım ve bu hatların hepsini işlemciye direkt gerekli opto ve opamp buferleriyle girmek çoklayıcı gibi yada switch gibi donanımlara girmek istemiyorum.

yazılımda habire o adc kanalını okutup durmakda iş değil gibi 2 tane 2 li gurup halinde toplam 4 adet adc için bunu yapmama gerekecek ama şöyle bir şey varsa güzel olurdu.bir taşla iki kuş hatta dört kuş vuruluyorsa işi yine yazılımda o adc kanallarını belirli periyotlarla sık sık okumakla yapılabilir.
işlemcide aynı zaman aralığında aynı anda 2 tane yada 4 tane adc pinini birden okuyup sonuçları elde etmek bu olabilirmi?


picmanya

pic için C koduyla yazılmış C18 veya C30,C33,C32 olabilir hiç farketmez işlemci adc pinlerinin 2 sinin veya 4 ünün aynı anda okunduğu tarz bir koda rastlayan veya böyle bir uygulama yapan oldumu?
Benim işin asıl çözümü burda yatıyor.pic işlemci bu tarz bir çalışma yapıyor ama onca araştırmama rağmen bu konuda bir çalışma veya koda rastlamadım.Gören bilen varmı?

OG

Yanlışsam arkadaşlar düzeltsin, "hiçbir mikrokontrolor/işlemci aynı anda iki iş" yapmaz derler. Yeterince hız var ise "an kavramı" sizin için önemli olmaz.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Tagli

Ayrıca, genelde mikrodenetleyicilerde 1 adet A/D dönüştürücü olur ancak buna giren birden fazla kanal vardır. Aynı anda sadece 1 adet dönüşüm işlemi yapılabilir. Yani kanalların sırayla taranması gerekir.
Gökçe Tağlıoğlu


picmanya

16 bit piclerde adc kanalları dahada geliştirilmiş  4 adet CH0,CH1,CH2,CH3 anahtarları ve sample hold kanalları var. Simultaneous Sampling ile Sequential Sampling örnekleme çeşitleri anlatılmış buraları inceleyen gören varmı?Belki bu tür bir şey üzerine değinilmediğinden öylece göz ucuyla bakılmış olabilir.Ama benim gördüğüm sanki bu tür şeyler 16 bit piclerde mevcut okuduklarımdan bunu çıkarıyorum ve çözmeye çalışıyorum.ben zaten 16F veya 18F 8 bitlik piclerde var demek istemedim ama 16bitleride bir inceleyip onlara yavaştan geçiş yapmaya başlamalı.

adc kanallar için şu tür terimler kullanılmış kullanım klavuzlarında;

Converting 4 Channels, Auto-Sample Start, TAD Conversion Start, Sequential Sampling
Multiple Channels with Sequential Sampling
Converting Four Inputs, One Time/Interrupt
Converting Two Sets of Two Inputs Using Alternating Input Selections
Converting 2 Channels, Auto-Sample Start, TAD Conversion Start,Sequential Sampling Code

bu yazılanlar 16 bitlik piclerin data sheetlerinden alıntı daha fazla bilgi için onları okumak gerekiyor.

bir işlemci aynı anda iki işi veya daha fazla işi aynı anda birden yapabilirmi?
Tabiki yapar pwm çıkış donanımını 4 kanallı olarak kullandığınızı düşünün ayarları birkere ayarlandımı ilgili çıkışları aynı anda veya farklı zamanlarda işlemci açar kapar taki siz ayarlamalarına programdan müdahale edip o donanımı kapatana kadar 6 çıkışlı motor kontrol çıkışlarıda bu mantıkla çalıştırılabilir bunlar işlemci üzerinde bir kere ayarlandıkdan sonra bağımsız çalışan iç donanımlar değilmi.
işlemci program satırını yani aynı anda birden fazla noktalı virgülle biten C kod satırını işletemez demek doğru olur ancak.
input capture modülüde donanımsal olarak kullanılıyorsa yine aynı mantık girişler istediği gibi çalışsın işlemcinin umrunda değilki aynı anda birden çok input capture girişi kendine gelen verileri registerine yazar buraya kadar bu girişler aynı anda çalışmıyorlar sıralı çalışıyorlar mantığı yürütlemez bu bir gerçek değilmi?
ama şu denebilir biz o registerlerin hepsinin içeriğini bir yerlere aynı anda yazıp değerlendiremeyiz.

16bit işlemcilerin 10 bit adc kanallarını iyice incelemek gerekir sanki aynı anda birden fazla kanalı buda muhtemelen 2 ve 4 kanalı okuyor olabilirler benim bu konunun olabileceğine dair şüphelerim var.
kesin olduğunu bilsem üstüne giderim ama yok deyip geçiliyor benim ümidim kalmıyor.bakasım gelmiyor.