Farklı çalışma hızına sahip iki işlemciyi haberleştirmek

Başlatan erdogan2734, 10 Haziran 2016, 12:55:55

erdogan2734

   Merhaba Arkadaşlar;
   Şimdi elimde 4Mhz dahili osilator ile çalışan bir sistem var. 16f628a işlemci kullanıyorum ve Programı PBP ile yazdım.
   Hser out komutu ve rf ile veri yolluyorum.
   Karşılığında yeni bir alıcı kullanıyorum. Kullandığım alıcı 16f628a ve harici 20Mhz osilator kullanıyorum bununda yazılımı farklı
sebeplerden dolayı proton ile yazıldı ve hser kesmesi ile veri alacağım.
   Burada size sormak istediğim soru karşılıklı alıcı ve verici illaki aynı çalışma hızına mı sahip olmak zorunda.
   Yada ben 9600 Baud rate de bi tarafada 4 Mghz osilatoru olan işlemcim ile bir tarafda 20 Mhz osılatorlu işlemcımı haberleştirebilirmiyim.
   Sadece baudrate ayarı yapmam yeterlimidir.
   Bir kaç deneme yaptım olumsuz sonuç aldım.
   Yardımcı olursanız sevinirim.
İyi çalışmalar.


Erdoğan
İmkansızın zaman aldığı bir dünya'da bana zorluktan bahsetme!

Burak

İşlemci frekansları farklı olabilir ama her iki işlemcide de baudrate yapılandırması aynı hızda olmalıdır ..  Unutmadan , 16F628A-I/P modelleri 20 MHZ'lik harici XTAL osilatör altında sağlıklı çalışmayabilir .. İki yanda da 4 MHZ'lik dahili osilatör kullanmanı öneririm elbette 20 MHZ kullanman şart değilse ..

Burak
Ω Gens Una Sumus Ω

erdogan2734

  Burak Bey Merhaba;
  Ben çalıştıramadım.
  Baudrate ayarlarım aşağıdaki gibidir, yanlışlık varmı bakarmısınız?

ALICI KISIM


DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 129  ' 2400 Baud @ 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
define osc 20


VERİCİ KISIM
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 25  ' 2400 Baud @ 0,16%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
define osc 4


Ayrıca alıcı kısımda 20Mhz kullanmak zorundayım.
İyi çalışmalar.
Erdoğan
İmkansızın zaman aldığı bir dünya'da bana zorluktan bahsetme!

ete

20 Hmz için aşağıdakini dene
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 129 ' 2400 Baud @ 20MHz, 0,17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically


4 Mhz için değerler doğru
Ete


erdogan2734

Alıntı yapılan: ete - 10 Haziran 2016, 17:53:59
20 Hmz için aşağıdakini dene
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG 129 ' 2400 Baud @ 20MHz, 0,17%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically


4 Mhz için değerler doğru
Ete



Hocam Merhaba dediğiniz gibi yaptım simülasyonda da reelde de çalıştı.
BRGH=0 yaptık.
Peki neden bu değişikliği yapmamız lazım onuda açıklarsanız öğrenmiş oluruz.

İyi çalışmalar.
Erdoğan
İmkansızın zaman aldığı bir dünya'da bana zorluktan bahsetme!

ete

Bu ayarlar için oturup hesap yapmaya gerek yok bunu defalarca tekrarladım.PicMultiCalc isimli basit kısa ama çok faydalı bir program var. Bilgisayarınızda durması gerek. Onun bir seçeneği USARTCalc şeklindedir. Oraya tıkladığınız zaman size en doğru ayarları verir ve onu ara hafızaya alır. Siz programa yapıştırırsınız. Bende aynısını yaptım. Baktım 20 Mhz ayarların farklı ve bende onu verdim.
Program hata oranı en küçük olan varyasyonu bulur. Senin hesabında belki doğrudur ama hata oranı daha yüksek bir varyasyon. O nedenle doğrusu benim verdiğim oluyor.
PicMultiCalc sitede mevcut aratırsan bulursun.
Ete

erdogan2734

Alıntı yapılan: ete - 11 Haziran 2016, 08:13:08
Bu ayarlar için oturup hesap yapmaya gerek yok bunu defalarca tekrarladım.PicMultiCalc isimli basit kısa ama çok faydalı bir program var. Bilgisayarınızda durması gerek. Onun bir seçeneği USARTCalc şeklindedir. Oraya tıkladığınız zaman size en doğru ayarları verir ve onu ara hafızaya alır. Siz programa yapıştırırsınız. Bende aynısını yaptım. Baktım 20 Mhz ayarların farklı ve bende onu verdim.
Program hata oranı en küçük olan varyasyonu bulur. Senin hesabında belki doğrudur ama hata oranı daha yüksek bir varyasyon. O nedenle doğrusu benim verdiğim oluyor.
PicMultiCalc sitede mevcut aratırsan bulursun.
Ete


Hocam Merhaba
Dediğiniz program bende mevcut, bende 20Mhz için oradan ayarları aldım. Ancak nedense çalıştıramadım.
Şimdi programı tekrar çalıştırıp baktım acaba bir yerde hatamı yapıyorum diye, şimdi aldığım değer sizin verdiğiniz ile aynı belki gözümden kaçmıştır.
Teşekkür ederim bilgi için.
Erdoğan
İmkansızın zaman aldığı bir dünya'da bana zorluktan bahsetme!

Powered by EzPortal