Seri Port Tek Bitlik Sayı

Başlatan zoptan, 01 Kasım 2008, 21:18:25

zoptan

Merhabalar, manyetik sensör ve max232 kullanarak cismi algıladığımızda seri porta lojik-1 bilgisi göndererek Pc programı vasıtasıyla malzeme sayımı yaptırmak istiyorum. Aceba seri port tek bitlik 1, 0 bilgisini algılayabiliyormu yadımcı olabilirmisiniz.
Herkes Cennete Gitmek İster, Ama Kimse Ölmek İstemez.

Erol YILMAZ

En basit şekliyle 0...255 arasındaki bütün sayıları algılayabiliyor.
istersen 5 ve 8 olarak bile okuyabilir :)

z

Sensor cikisindaki 1 bitlik veri, herhangi bir anda var olup herhangi bir zamanda yok olacagina gore, veri seri data formatina sahip değildir.

Bu durumdaki bir veriyi PCnin CD, CTS, DSR pinlerinden herhangi birisinden girmen yeterli.

Istersen RX pininden de girebilirsin. Bu durumda Overrun, framing error gibi flaglara bakabilirsin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

zoptan

Ben sadece seri portun Rx girişinden malzeme algılandığında lojik-1, malzeme olmadığı andan lojik-0 olacak şekilde olayı düşünmüştüm, seri port tek bitlik 1-0 değerine hata verirmi, sistemde sayma işleminde sorun çıkarmı sizler sayesinde bundan emin olmak istiyorum. Bilgiyi sunanlara teşekkürler.
Herkes Cennete Gitmek İster, Ama Kimse Ölmek İstemez.

z

Tamam iste bende verinin 1 yada 0 oldugu durumlari tespit edebilmen icin seri portu nasil kullanacagini yazdim.

Ben olsam kesinlikle RX pini yerine yukarida saydigim pinlerden birisini kullanirim. CD tercihim.

Illede RX dersen, PC tarafinda baud rate degerini olabildigince yuksek degere set. Mesela 115200.

PC konnektor uzerindeki RX pinin bir sure icin 1 oldugunda  UART frame error verir. Sen FE testi yaparak 1 bilgisi geldigini anlarsin. RX 0 oldugunda ise FE flagi sifirlanir. (Veri kaybetmemek icin surekli olarak LSR registerini yoklamak zorundasin.)

Ancak, ardisil 1-0-1 gecisleri icin limit sozkonusu. Aksi halde  RX verisi sans eseri seri data formatina uyar ve FE hatasi vermez.

Iste bu nedenle baudrate degerini cok yuksek tutmani onerdim.

Eger CD pinini monitor edersen isin cok kolay olur. Zira CD nin her 1-0-1 gecislerinde UART int uretir ve herhangi bir zaman limitin olmaz. Buda sana sensor ne zaman 1 ne zaman 0 oldugunu yakinen takip etmene imkan verir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ferdem

Malzemelerin geçme hızı nedir? Malzemenin manyetik sensör önünde olup olmadığını 1 ms de bir kontrol etmeniz yeterli mi mesela?
Malzemeyi saymak için şöyle bir yöntem izleyebilirsiniz: Manyetik sensörünüzün çıkışının istediğiniz değere ilk gelişinde(malzemeyi gördüğünde veya boşluğu gördüğünde) -ki bunu en güzel RB0 kesmesiyle algılarsınız-PIC bilgisayara #AA verisini mümkün olan en yüksek baud hızında göndersin. Bilgisayar tarafına yazacağınız bir yazılımla (mesela Visual Studio.net altında C#-örnekleri çok) bu gelen veriyi anında kontrol edip sayacı bir arttırabilirsiniz.

Yani sizin isteğinize göre lojik bir için #AA verisini gönderiyoruz lojik 0 için hiçbir şey göndermiyoruz.

Tabi bunları eğer sayı bilgisinin bilgisayara eşzamanlı olarak gitmesini istiyorsak yaparız, yoksa PIC bunu zaten sayabilir, daha kolay olur. Yani eğer asıl amaç sayıyı göstermek ise PIC le saydırıp LCD veya "seven segment" göstergelerde gösterebilirsiniz. İyi çalışmalar.

zoptan

İlginiz teşekkürler arkadaşlar, sayın Z hocam peki ben Rx yerine CD'yi nasıl okutacağım bunu hiç yapmadım, CD'yi delphi'de okutabilirmiyim bu konuda bilginiz varmı? tşk .
Herkes Cennete Gitmek İster, Ama Kimse Ölmek İstemez.

lojikmemo1

Alıntı yapılan: "zoptan"İlginiz teşekkürler arkadaşlar, sayın Z hocam peki ben Rx yerine CD'yi nasıl okutacağım bunu hiç yapmadım, CD'yi delphi'de okutabilirmiyim bu konuda bilginiz varmı? tşk .

.Net de basit ama delphi de biraz zor olacaktır.
Seri porttan aslında 1 bitlik veri gitmez çünki protokole aykırı bilirsiniz ki genelde kullanılan protokol formatı 8N1 dir bu da 8 data biti 1 stop biti tabi bu bitlerin pals süreleri seri iletişim hızı tarafından belirlenir vs...
CD ve diğer bitler seri portun ileri seviye hand shake doğrulaması içindir kabaca veri hazır mı , yeni veri gönderiyom felan gibi yani bu bitleri tek başına kullanman biraz zor olabilir hatta problemler de çıkabilir çünki bu ilteişim akış kontrol bitleri donanımsan olarak seri port modülü tarafından kontrol edilir bidiğim hiç bir seri port componeti, dll veya ocx bu bitleri desteklememektir.
En güzeli bir tane pic kullanarak sensör lojik 1 olunca seri porttan 1 verisini lojik 0 içinden de 0 verisini göndermek ama buradaki bir lojik bir olmayacaktır kafamız karışmasın bu veri sei porttan format gereği şöyle gidecektir. 00000001S  S harfini stop biti için kullandım böylece seri porttan 1 verisini PC programının içine alabilirsin.
Kolay gelsin

M. AYDOĞDU
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

zoptan

İlginiz için tekrar teşekkürler. Yapılan değerlenmdirmeler sonucunda PIC kullanarak PC ile haberleşmeye karar verdim. Bunun için picbasic ile bir program yazacağım. serout veya serout2 komutlarını kullanarak. Bu konuda yardımcı olabilirmisiniz. Mesala lojik 1 için yani 00000001S nasıl bir komut satırı yazmam gerekiyor, stop bitini ise 0 veya 1 gibi bir bitmi seçmem gerekiyor. Konu çok acil teşekkürler şimdiden.
Herkes Cennete Gitmek İster, Ama Kimse Ölmek İstemez.

lojikmemo1

Alıntı yapılan: "zoptan"İlginiz için tekrar teşekkürler. Yapılan değerlenmdirmeler sonucunda PIC kullanarak PC ile haberleşmeye karar verdim. Bunun için picbasic ile bir program yazacağım. serout veya serout2 komutlarını kullanarak. Bu konuda yardımcı olabilirmisiniz. Mesala lojik 1 için yani 00000001S nasıl bir komut satırı yazmam gerekiyor, stop bitini ise 0 veya 1 gibi bir bitmi seçmem gerekiyor. Konu çok acil teşekkürler şimdiden.

Merhaba
basi dilini tam hatırlamasamda "serout 1" yazmanız 1 verisini göndermek için yeterli 1 sayısı yerine 0-255 arası istediğiniz sayıyı yazabilirsiniz detaylı bilgi için basic derleyicisinin yardım dosyalarına bakabilirsiniz.
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.