PIC Seri haberleşme sorunu

Başlatan humanus, 22 Nisan 2013, 17:36:55

humanus

PIC 16f877 ile PC'yi haberleştiriyorum. Seri haberleşmede yeniyim. Assembly kullanıyorum. Eğer hem  uydu kart  hem de PC 9600 Bps ayarlıysa sorun yok. Data PIC tarafından sorunsuz alınıyor. Ama PC , diyelim 19200 Bps ayarlanırsa,9600 Bps ayarlı PIC abuk sabuk adres ve data bilgileri gösteriyor. Bu sorunu nasıl aşabilirim. PIC tarafında LCD kullanıyorum. Gelen data 8 bit. İşin içinden çıkamadım.

Okan AKÇA

haberlşeme hızları her iki taraftada eşit olması gerekiyor.

Tagli

Bazı PIC modellerinde önceden bilinen bir veriyi değerlendirerek hızı otomatik belirleme özelliği var.
Gökçe Tağlıoğlu

Analyzer

Selam,

El sıkışma yaparsınız. Bir taraf bir start kodu yollar, diğer taraf da kodu doğrular. Kod doğru değilse baud hızı değiştirilir. Ta ki kod doğrulana kadar.

Analyzer
Üşeniyorum, öyleyse yarın!

Okan AKÇA

acaba hangi modellerde dediginiz özellik var yenimi cıktı ?

Tagli

Pek yeni sayılmaz. EUSART modülü bulunduran modellerde var. Mesela PIC18F2520'de var.
Gökçe Tağlıoğlu

Okan AKÇA

ben hic farketmemişim :D dediginiz yazılımla yapılır  :)

z

Otomatik baud ayarla işleminde taraflardan birisi en yüksek baud rate ile başlar ve örneğin 55H yollar. Beklemeye geçer.
Bekleme süresi içinde karşı taraftan herhangi bir şey gelip gelmediğine bakar.

Bekleme süresi dolduğunda bir alt Baud rate değerine geçer ve tekrar 55H yollar.

Böyle böyle en düşük baud rate değerine kadar dener. Olmadı tekrar en baştan başar.

Eğer deneme baud rate değerlerimiz karşı tarafın baud rate değerini içeriyorsa bu denemeler sonucunda karşı tarafın baud rate'i muhakkak anlaşılır.

-----------------

Eğer PC yazılımında hiç bir değişiklik yapamıyorsan o zaman;

Kendi kartında baud taramasını sen yaparsın.

En yüksek baudla başlar ve data beklersin. Data geldiğinde Frame error olup olmadığına bakarsın. Varsa baud hatalıdır.
Frame error oluşmadan data alındı ise bu denemeyi bir kaç kez yaparak farklı datalar alınırken frame error olup olmadığına bakarsın.

Eğer farklı datalar alabiliyor ve frame error olumuyorsa seçtiğin baud rate doğru demektir.

Eğer hata olmuşsa bir diğer baud rate'i denersin.


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

humanus

Cevaplar için teşekkür ediyorum. Tagli'nin söylediğini araştırdım. Eusart kullanan PIC'lerde (18F'lere baktım) Auto baudrate detection özelliği var. Bunun üzerine yoğunlaşacağım. Sonucu yazarım :)