avatar_kotan04

PicBasic ve Seri port VisualBasic

Başlatan kotan04, 20 Ocak 2013, 10:34:16

ete

#15
Farzet ki bir evdesin. Evde işlerin var ama beklediğin biriside var onun kapıyı çalmasını beklemeden sen kapıyı açmak istiyorsun. Ama diğer yandan evdeki diğer işlerinide bitirmek istiyorsun. Ne yaparsın. ?
İki alternatifin var,
Birisi öyle bir noktaya gelirsinki kapıyı ve dışarısını sürekli gözlersin arada da iş yapmaya çalışırsın. Bu durumda her iki işinde aksar aslında.

İkinci alternatif te kapıya birisini koyarsın birisi gelince haber ver dersin. Böylece kapıyı unutup işini olması gerektiği gibi yaparsın. İşte USART da kesme kullanmak bu ikinciye örnektir. Kullanırsan sürekli port kontrolü yapmaktan kurtulursun. Kesme oluşunca program otomatikman kesme etiketine gider ve gelen veriyi alır. Çünki bu durumda veri gelip gelmediğini kontrol etme işini senin programın değil arka planda çalışan başka bir kontrol sistemi üstlenir ve senin kendi programını aksatmadan bekçiliğini yapar.
Kesme kullanmaz isen hem programın yapması gereken diğer işleri yapacak hemde arada bir veri gelip gelmediğini kontrol edeceksin demektir. Bu ise pratikte epeyce soruna sebep oluyor. Örnek vereyim. Bu iş için kullanacağın SERIN komutları veri gelişine bakmak için orada mutlaka 65535 ms bekler. Bu ise programında epeyce bir gecikmeye sebep olur. Veri sürekli akıyorsa sorun yok ama arada bir geliyor ise sorun oluşturur programın diğer işlevleri sekteye uğrar.

Üstelik veri alınması için senkron denilen ve gelen veri ile alma işleminin bir biri ile uyumlu çalışması gibi bir şeyede ihtiyaç vardır. "Veri" daima bir bilgi paketi gibi düşünülmelidir. Bu paket digital sistemde bitler halinde yollanır. Gelen verinin doğru alınması için alan sistem beklemede olmalı ve veri geldiği anda ilk bitten itibaren hepsini almalıdır. Ama arada bir veri geliyormu diye bakınca gelen veri paketinin ortasından dalarak gelen veriyi alma gibi bir durumlada karşılaşılması olasıdır. Bu nedenle istenen veriler tama olarak alınmayabilir. Alınması için hep orada beklemek zorundasın. Bunu önlemek için bir yerde veri işaretçisi kullanıyoruz. Bu veri paketinin başına bir özel karekter gurubu eklenmesi anlamına geliyor. Dolayısıyla alan gelen veride bu işaret var ise devamını alır değilse paket başını bekler.  Bu düşündüğünüzden daha karmaşık bir işlemdir ve doğrusu KESME kullanarak yapılmasıdır.
Üstelik kesme kullanınca timeout denilen ve belirli bir zaman süreci içinde gelen verinin kontrol edilmesini gelmemiş ise kesmeden çıklmasını sağlayan parametrenin çok iyi çalışması nedeni ile işler kesintiye uğramadan saat gibi tıkır tıkır işler.
Kısaca Kesme kullanılması doğru haberleşme için elzemdir diyebiliriz.

Ete

Powered by EzPortal