seri iletişimde kristal sorunu ????

Başlatan emrah, 23 Aralık 2010, 11:48:04

emrah

slm, arkadaslar pic 16f877a ile pc seri haberlaşme devresi yaptım fakat, osilatör 4 MHZ iken pc editörüne istedigim yazı geliyor, kristali 10 MHZ göre ayarladıgımda farklı karakterler geliyor.  baunrate nasıl ayarlanmalı yada unuttugum başka birşeymi var ?

volkang

Arkadaşım aynı sorunu bende yaşamıştım. datasheet'den baudrate/osc oranlarına bakmalısın. Kısaca bilmen gereken şu ki her osc frekansında her baudrate değerini kullanamazsın. mesela 2400bd. için 4mhz. iyidir fakat 9600bd de 4 mhz kullanırsan sorunlar yaşarsın. Bir de kullandığın kristallerin aynı marka olmasına dikkat et ziira 4mhz ama farklı firmaların kristalleri aynı  ve uygun baudrate değerinde bile sorun çıkarabiliyor.

Maxim

osc frekansına göre baudrade ayarları var onları hesaplayıp değişmek lazım, yoksa seri iletişim hatalı oluşur ve giden gelen datalar bozulur .

diğer şeyde bazı frekanslarda bazı baudrate hızları desteklenmez, örnek
4mhz de 1200kbps çalışırken
20mhz de olmaz ! (16 - 18 serilerinde)

bu hesapları tek tek yapmak yerine internette bulabileceğiniz birçok program mevcuttur
alın size bir örnek, indirin hesaplayın bakalım neresi hatalıymış ?
http://www.micromagicsystems.com/#/pic-baud/4523812801

not:osc frekansını 4.00 yerine 4 girin veya 20 girin, noktadan sonrasına hata verdi nedense .

kudretuzuner

Merhaba
PIC tarafında hangi dili kullanıyorsunuz bilmiyorum ama ben size  .asm yazılımı ile ayarları vereyim.
TXSTA registerin ikinci biti olan  BRGH (1)  bir ise yüksek hız moduna ayarlıdır.Bu ayarda 9600 baud rate ve 4 Mhz kristal için SPBRG (desimal) olarak (25) değerini almalı.Aynı ayarlarlarda kristali 10 mhz ile değiştirirseniz SPBRG (desimal) 64 olmalı.
MOVLW D'25'
MOVWF SPBRG veya
MOVLW D'64'
MOVWF SPBRG,kolay gelsin.Not: BRGH (0) düşük hız modunda ise desimal değerler değişir.Bu noktayı atlamayınız.
Amatör