Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

seri port gecikme

Başlatan Rekofen, 02 Mayıs 2011, 12:20:28

Rekofen

Hayırlı günler arkadaşlar. Jal'da daha doğrusu genel sorayım; Seri port üzerinde pic üzerinden veri gönderirken bir gecme yapmak gerekiyor yoksa pic manyak gibi veri gönderiyor ve programda doğal olara donuyor.Ancak delay kullanıldığında aynı zamanda pc üzerinden veri gönderildiğinde gecikmeden dolayı işlem geç oluyor.Program yukarıdan aşşağı doğru çalıştığı için bazen bu geçikme hiç işlem yapmamasına neden oluyor.Şöyleki :

if pin_a2 == high then
serial_hw_data = 49        ---------Aradaki gecikmeden dolayı pc den gelen veri arada kaynayıp gidiyor
 _usec_delay(250000)      -------- artırdığımız zamanda pc ye deli gibi veri akıyor bu seferde bellek taşması hoş onu halledilir ama gereksiz
end if



if serial_hw_read (gelen) then
if char == "1"  then  pin_A1 = high   end if
if char == "2"  then  pin_A1 = low    end if
end if


bir diğer yöntemde ise şöyle yaptım

procedure kes is
if pin_A2 == high then
serial_hw_write (49)
serial_hw_disable
end if


Burda sadece bir kere çalışlıyor ancak tekrar pin high olduğunda iletişim kapalı olduğu için doğal olarak çalışmıyor.Şöyle yaptığımda ise;


procedure kes is
serial_hw_enable
if pin_A2 == high then
serial_hw_write (49)
serial_hw_disable
end if

Aynı şey gerçekleşiyor.Bir for döngüsü içine aldığım zamanda aynı şey oluyor.Yani ne yaptıysam sadece 1 kere durum gerçekleştiğinde veri göndermesini beceremedim.While ile ayırdığım zamnda sıyırıyor.Gecikme kullanmadan,  mesela Pin_a1 = açık ise seriyaz = 1 ama bir kere
Acaba hatta dönen veriyi okutsam 1 kere gittiği zaman kesme yapabilirmiyiz ?

Bana örnek verebilirmisiniz ? illede jal olması gerkmez bir fonksiyon örneği de olur ? Bana bir fikir bir meded  ::)
Jal iyidir :)

kudretuzuner

Merhaba
Ben VB Net kullanmaktayım.PIC ne kadar çılgın gibi data gönderirse göndersin gelen dataları readline şeklinde değil de readbyte şeklinde alınır istenilen datanın sonunda da kontrol prosesi koyar seriport close yaparsanız işinize yarayan byte ları kontrol etmiş olursunuz.Ama tabii PIC'in de kontrollu data yollaması tercih nedenidir sonuçta bir sinkronizasyon söz konusu.PIC'ten Buton,röle pabuçlarında vs gibi bir elemandan data yollanıyorsa basit bir gecikme döngüsünü yazılıma ilave etmek PIC'in sağlıklı çalışması açısından da önemlidir diye düşünüyorum.Buton ayaklarında oluşacak Arkların da söndürülmesi için de 100 nf ihmal etmemek şartı ile.Kolay gelsin. 
Amatör

Rekofen

c# üzerinde sürekli olarak buffer temizleniyor.Ancak bu gecikme dediğim gibi pc üzerinden pic'e veri aktarıldığıda problem oluşturuyor.Bir çözüm akan veriyi bir karşılaştırma ile kısıtlamak gecikme yaptırmaktan daha kararlı.Ancak pic ile görsel programlama aynı değil sorun orada çok az kaynağı olan bir dil ne yazıkki jal.Heleki gelen giden veri akışının çokluğu ve kontrol noktalarının fazlalığı işi daha da beter ediyor.Uğraşayım biraz daha belki bulurum bir çözüm.
Jal iyidir :)

kudretuzuner

Merhaba
Sizin uğraşınız tahmin ediyorum profesyonel bir sistem üzerinde.Ben amatör olarak sadece 16F628A'ya, adedi,karakteri belli dataları gömüp,bu dataları da VB Net ile PC'den okumak.
Amatör

Rekofen

Basit giriş çıkış işlemi ama tam belirlenmemek kaydı ile 10-12 giriş ile 7 ve ya 8 çıkış işlemi var ve sık aralıklar.  ccs ye döneceğiz anlaşılan. jal hızlı kolay ama sil baştan yapmak olmuyorki al eline kitap haydi :o  gene de jalı kurcalamaya devam.
Jal iyidir :)

Rekofen

 :D YAPTIM !!!!

delay derdine son  :o

if pin_A2 == high then  --- Butona basıldığında
serial_hw_write (m)      ---- m = "sayı yahut karakter"
l = l + 1                       ---- l = 0 bir arttır.
while l > c loop             ----- l c den büyük olana kadar yaz "c = 2 kafana göre kaç karakter yada ne istiyorsan"   
if pin_a2 == low then    ----  bu sefer butona basılmassa aynı işlemin tersi oluyor
l = l - 1
serial_hw_data = 66
end if
end loop
end if


Jal güzel tabi uraşınca  :PBenim gibi aynı derde düşüp deli dana gibi uraşmasın diğer kardeşlerim.Bu işin en güzel yanı delayların sizi deli edemeyecek olması her koşulda her hızda bekleme olmadan hızlı iletişim.OH beee.
Jal iyidir :)