serin2 serout2 hkk

Başlatan sefon, 26 Haziran 2013, 14:34:32

sefon

sayin ete hocam serial konusunda yardiminiza ihtiyacim var
ben serin2 serout2 ile 4mhz 9600bd da normal haberlesmeyi sagliyorum
ancak bunu 10mhz de 19200 bd ve uzeri haberlesmede denedim olmadı

    SERIN2 GIRIS,N9600,[WAIT("SSS"),KART,DTAL] Tamam

    SERIN2 GIRIS,N19200,[WAIT("SSS"),KART,DTAL] olmadı
yardımcı olusanız cok memnun olurum simdiden tesekkur ederim
herkse kolay gelsin

ete

SERIN2 komutnda yazdığın şekil pek kullanılmaz.
Komut kullanım şekli şöyle,
SERIN2 , GIRIS,MODE,[WAIT("SSS"),KART,DTAL]
Mode yerine ne yazılacağı şu hesapla yapılır  Mode=(1000000/Baud)-20
Hesabı 9600 için yaparsak 84 rakamını bulursun. O halde komut
SERIN2 , GIRIS,84,[WAIT("SSS"),KART,DTAL]   (9600 baud , Driven , True ve No Parity)
Şayet senin yazdığın gibi N9600 şeklinde inverted kullanmak istersen, Mod=16468  yazılmalıdır.
SERIN2 , GIRIS,16468,[WAIT("SSS"),KART,DTAL]   (9600 baud , Driven , Inverted ve No Parity)

Şimdi aynı komutları 19200 baud için yazalım.

SERIN2 , GIRIS,32,[WAIT("SSS"),KART,DTAL]   (9600 baud , Driven , True ve No Parity)
SERIN2 , GIRIS,16416,[WAIT("SSS"),KART,DTAL]   (9600 baud , Driven , Inverted ve No Parity)
Şeklinde kullanılmalıdır.

Bunları dene bakalım.

Bu arada inverted nasıl hesaplandı diye sorarsan açıklama şöyle;
Mod değeri bit.13 , parity seçimini yapıyor. No parity ise bit13=0, even-party ise bit13=1 oluyor. Ohalde Mode=%0xxxxxxxxxxxxx
Bit 14 datanın True yada İnverted olup olmadığını kontrol ediyor . Bit14=1 ise data inverted  sıfır ise True şeklinde alınacaktır. O halde true için bu bit sıfır, inverted için bu bit 1 olmalıdır. Diyelimki inverted hesaplıyoruz o halde,
Mode=%10xxxxxxxxxxxx
14. cü biti 1 olan sayı 16384 dür. O halde 19200 baud için hesapladığımız değer 32 idi. Buna 16384'ü eklersek 16416 sayısını elde ederiz.

Ete

sefon


Powered by EzPortal