PC ile PIC arasinda seri iletisimi gerceklestiremiyorum.

Başlatan Digimensch, 04 Ocak 2005, 22:05:29

ete

Şimdi farkettim nedir bu baud rate demişsin;

Baud rate seri haberleşme işinde birim saniyede transfer edilen (aktarılan) bit sayısıdır. Örneğin ilk kullandığın 2400 Baud senin 1 sn de 2400 bit transfer ettiğini göstermektedir. 9600 Baud'a çıkınca 1 sn. de 9600 bit göndereceksin anlamına geliyor. Dolayısıyla yaptığın iş 4 kat hızlanıyor demektir. Tabiiki sistem de buna müsait olmalıdır.

Ayarladığın mod değerlerinin açıklaması ise şöyle;
Önceden bazı tesbitlerimizin olması gerekiyor. Şöyleki;
- Haberleşme Hızı (Bud Rate) ;Diyelimki 2400 Baud hızında seri haberleşme yapacaksın.
- Gönderilecek data larda bir parite kontrolu yapılacakmı (parity veya none) diyelimki parite kontrolu yapmayacağız. Bu demektir ki 13.bitimiz=0 olacak.
- Gönderilecek bilgiler olduğu gibimi gönderilecek yoksa ters (inverted) mi gönderilecek. Diyelimki olduğu gibi gönderilecek. Bu durumda 14.Bitimiz=0 olacak demektir.
- Sİstemde başka seri haberleşmeye katılan aletler var ise 15. bit open bırakılmalıdır. Diyelimki yok. Bu durumda 15. Bitimiz Driven yani sıfır olacaktır.
Şimdi bu tercihlerimize karşılık gelen mod sayısını hesaplayalım.
Formül = (1.000.000/Baudrate)-20 yani;
F= (1.000.000/2.400)-20 =396 bulunur.
396 sayısının ikili sayı sistemindeki karşılığı ;
396= 110001100 dır. Bu sayı 9 bitlik bir sayıdır. Şimdi 13-14 ve 15. bitlrimizi yazıp yanına 396 sayısını ekleyelim ve toplam bit sayısını 16'ya çıkartalım;
0 0 0 0000 110001100 Bu sayının karşılığı ise yine 396 dır. Tabloya bakarsanız göreceksiniz.

Şimdi 14.biti 1 yapalım. Yani gönderilecek datalar invert edilerek gönderilsin diyelim. Bu durumda sayımız;
0 1 0 0000 110001100 olacaktır. Bu sayının karşılığı ise 16780 olacaktır.
Hesap şekli ve mantığı bu şekildedir. Umarım anlamışsınızdır.

Kolay Gelsin
ETE
G
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

ete

4 MHz kristal kullandığın zaman 9600'ün altındaki baud ların herhangi birisi ile çalışabilirsin anlamına geliyor. 4 MHz nin üzerine çıkınca 9600 de kullanabileceklerin arasına dahil oluyor. Kısaca 5 mhZ kristal ile 2400-9600 arası tüm baud larda çalışabilirsin demektir.
Şu 16486 rakamına takılmış gibisin. Acaba rakamlarımı ters yazıyorsun yoksa 16486 rakamı kafanda sabitmi. Doğru rakam 16468 olacak. Bir defa bunu düzeltelim. Soruna gelince 5 MHz kristal ile 9600 baud kullanabilirsin ve tabiiki mod rakamın bu durumda 16468 olacaktır.

Picler de 16F serisi en fazla 20 MHz ye kadar çalışabiliyor. Bu frekansa çıkabilenlerin üzerinde /20p diye çalışma frekansı belirtilmektedir. Normal olarak 4 MHz de çalışabilirler. Bildiğim kadarı ile 18F serisi 40 MHz ye kadar çalışabiliyor. Bu durumda 18F serisi kullanmadığın sürece 27MHz kristal kullanamazsın.

ETE
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Digimensch

Cok sağol dostum cok tesekkür ederim verdigin bilgiler icin.
Belkide ben sorunlari  3,57 MHZ lik Kristal kullandigim icin yasadim.
Oysa 4 MHZ'lik Kristal kullanmis olsaydim bu sorunlari yasamiyacaktim.
Ama neyse bu esnada bunlarida ögrenmis oldum.
Ayrica PicBasic Kodlarimda 3,57 MHZ'lik Kristal kullandigim icin
Define OSC 3  satirini kullanmak zorunda kaldim.
Acaba gercektende 3,57 MHZ'lik Kristal kullandigim icin su PicBasic kodunda Define OSC 3 satirini kullanmama gerek varmi??

SEND var PORTA.0
BAUD CON 16780 ' Hyper Terminaldede 2400 secilmeli
Define OSC 3

TRISA = $00000001 
PORTA = 0
TRISB = 1
PORTB=  0
Main:
SEROUT2 SEND,BAUD,10,["ADI:UGUR",13,_
"SOYADI:YALCIN",13,_
"D.TARIHI:1972",13,_
"D.YERI:HAYDARLI",13,_
"PROGRAM YAZARI:UGUR YALCIN",13,13]  '13 bir asagi satira yöneltir
goto Main
end

Erol YILMAZ

3.579545 mHz diye gidiyor aslinda.
Bu TV lerin renk ayrim seysinde kullaniliyormus.
Ama Basic te sadece belirlenenen degerlerde OSC frekanslari kullanilmasi cok iyi bir ozellik değil.

@Digimensch

Derleyicin verdigin OSC frekansina gore Bitlerin cikis hizini belirliyor. OSC hizin cok onemli......
Ayrica bu frekansi tam olarak yazamiyor isen standart bir frekansa gec. Orn 4 Mhz.

Digimensch

Belki aslinda basit bir olaydir belki ama benim kavrayamadigim su;
Ben yukardaki devreyi Similasyaon olarak Proteus'da calistirdigimda
BAUD CON 396
DEFINE OSC 4
yapiyorum gayet iyi calisiyor.
Fakat gercek uygulamada bu yukardaki degerler ile devre calismiyor.

Gercek uygulama yaparken
BAUD CON 16780
DEFINE osc 3
bu degerleri veriyorum o zaman calisiyor.
Bu degerleri bu seferde Similasyon yaparken verdigimde bu seferde Similasyonda devre calismiyor.
Neden bu seri iletisim Proteus'da baska degerler ile gercek uygulamada baska degrelerle calisiyor??
neden acaba Similasyon icin baska deger, gercek uygulama icin baska deger vermek zorunda kaliyorum?
proteus'da ne ise gercek uygulama yaptigimdada o degereler ile calismiyor??
Sorun acaba benim 3.579545 MHZ'lik Kristal kullanmamdanmi kaynaklaniyor??

Erol YILMAZ

@Digimensch;
artik saka yapiyorsun zannediyorum. ben hep malzemeler insani catlatir zannediyordum. Biraz zorlarsan sen malzemeleri catlatacaksin.

bir kere en  basta yanlis yapiyorsun, 3.579545 mHz kristali Pic Basic tanimiyormus. Onun icin Baud rate degerini derleyici tam olarak ayarlayamiyor. 4 te desen 3 te desen olmaaaazz.

Tak 4 mhz kristali, 2400 baud a ayarla alicini vericini,
gerisiyle ugrasma. Heryerden calisir. Istersen RF te yaparsin problem olmaz.

Artik calistir sunu!!!

Kolay Gelsin... :)

Veli B.

Dediğim gibi pic için böyle bir kristal kullanmadım ama PBP helpinde diyorki;

"DEFINE OSC 4 'Oscillator speed in MHz: 3(3.58)  4  8  10  12  16  20  24  25  32  33  40 "


ben bu satırlardan
DEFINE OSC 3  tanımlaması ile 3.57 yi tanıdığını anlıyorum.

Ama benimde şahsi tercihim 4 mhz kullanmak olurdu.
3.57 geneklde telefonlarda ton kodlaması için kullanılıyor.sonuçta aynı para üstelik.Kendini kasmanın anlamı yok...

Digimensch

@Erol
dostum ben devreyi calistiriyorum calismiyor değil.
herhalde sen zahmet edip benim yazdiklarimi okumuyorsun.
Devre calisiyor , calistirmayi yapiyorum ama Gercek denemede baska Baud rate tanimliyorum , similasyon olarak calistirikenbaska Baud rate tanimliyorum ben bunu anlamaya calisiyoruum.
Olay bu.
Degilse Devreyi calistirdim , hatta baska örnekler dahi yaptim.
Hatta Max232'li Tampon devreye dahi gerek kalmadan sadece 22 Kohmluk Seri Direnc ile örneklerimin calistigini gördüm.
ilk isim yarin 4 MHZ'lik Kristal alip hic kasmadan bu neden böyle oluyor demeden denemelerime devam etmek.
Yardimci olan bütün arkadaslara tesekkürlerimi sunarim.

Erol YILMAZ

Simulasyon cogu zaman gercegin yerini tutmaz. Her ne kadar benzese de bir suru fark var arasinda.
Calistirdiysan problem yok. Varyasyonlari da denemissin. Ne kadar guzel.

Bu 3 deyince calisiyor 4 deyince calismiyor tarzinda gereksiz olduguna inandigim muhabbete gerek yok. Kriterler belli.

Basarilarinin devamini dilerim...
Kolay Gelsin...

lord

bana kalirsa hyper terminalin baud ve diğer ayarlarin da akiş diyagrami gibi hata yapiyorsun pc bağlantilarini iyicene gözden geçir ve terminal ayarlarini en ince noktasina kadar gözden geçir. seri haberleşmeyi her türlü picte sorunsuz yaptim hiç bir problemle karşilaşmadim... :)