Seri iletişim sorun

Başlatan erdemefe, 21 Kasım 2010, 19:45:35

erdemefe

arkadaşlar merhaba pic basic'i ete hocanın derslerinden takip ediyorum hem adc hemde seri iletişim konularını öğrenmek için 2 picle bir devre yaptım birinci picde adcden okunan değer hesaplanıyor ve 2. pice gönderiliyor 2. picde'de ekrana yazdırılıyor tabiki hesapta böyle :) olayları denemek için 1. picede LCD ekledim değerleri görüyorum değerler doğru fakat 2. picde ekrana yazdırılan değerler yanlış. neden bu böyle oluyor anlamadım gitti 2. pice ham değerini yollayıp hesaplamayı 2. picde yapsamda, 1. picden direk hesaplanmış değeri göndersemde 2. picde yanlış değerler görünüyor bunun nedeni nedir yardımcı olmanızı bekliyorum.

http://hotfile.com/dl/84045210/c2cbbc0/SERI_Voltmetre.rar.html

neural

#1
Verileri direk olarak mı yolluyorsunuz? Birden fazla olan dizilerin (verilerin) yollanmasında karışması gayet normaldir. Arada bir eşzamanlama ( senkron) sağlanması gerekiyor.  Örnek :

Senkron + Veri1 + Veri2 + Veri 3 + Veri4  gibi

Ancak şöyle bir yöntemde uygun olabilir. Verinizin Veri1 = 0x52 ve Veri2 = 0x10 olduğunu varsayalım.
Veri1 'i iki dörtlü (nibble) olacak şekilde ayırın. Yani üst dörtlü ve alt dörtlü > 05 ve 02
Bu iki sayının başına Veri1 'i ve alt, üst dörtlüyü tanımlayacak bir değer ekleyin.

A = adresi biti ve N = dörtlü biti

İlk dörtlü gönderiliyor.
AAAN0000 > 0010 0000(0x20) | 0000 0101(0x05) = 0010 0101 (0x25)
İkinci dörtlü gönderiliyor.
AAAN0000 > 0011 0000(0x20) | 0000 0010(0x02) = 0011 0010 (0x32)

Bu mantıkla gönderdiğiniz veriler veri1, veri2 ... verix alıcı tarafında da aynı mantıkla ayrıştırıp birleştirirseniz karışmadan gidecektir. Unutmadan adres için 3 bit kullanıldığı için en fazla 8 farklı veri gönderilebilir.

Kolay gelsin.

erdemefe

öncelikle cevabınız için çok teşekkür ederim fakat zaten sadece 1 veri yollamaya çalışıyorum ama oda olmuyor programı incelerseniz olup biteni anlarsınız

neural

#3
Cevabı devre dosyalarını indirirken yazdım. Denemesini yaptım potansiyometreyi maksimum değere getirdiğiniz zaman adc okuma işlemi yapan denetleyicide değerler 10bit olarak hesaplanıyor ve ekranda  gösteriliyor. Verinin tam gitmediği kanaatindeyim. Alıcı tarafta 2 bit gelmiyor. Vericinin ekranında 10bitlik bir sayı var ama alıcının ekranında 8bitlik bir sayı bulunuyor.

Ayrıca lcd ekran üzerinde formatlamaya ihtiyaç var. Pic C 'de bu printf("%4d",HAM); şeklinde yapılıyor. Ancak pic basic fazla bilmiyorum.

Kolay gelsin.

erdemefe

hocam çok özür diliyorum ben olayın farkında değildim ne demek istediğinizide acemiliğimden dolayı anlamamıştım. şimdi anladım mesele 10 bit 8 bit meselesiymiş ama çözümü konusunda hala bir fikrim yok