Picproje Elektronik Sitesi

SERBEST BÖLGE => Programlama ve Algoritma => Konuyu başlatan: OG - 16 Temmuz 2012, 16:09:55

Başlık: Asenkron Seri Port (8N1) Baudrate bulucu
Gönderen: OG - 16 Temmuz 2012, 16:09:55
Gelen 8N1 datanın kaç baud olduğunu anlayabilecek hazır bir kod/algoritma varmıdır? 1200-115200 arası hızlar için.
Başlık: Ynt: Asenkron Seri Port (8N1) Baudrate bulucu
Gönderen: Erol YILMAZ - 16 Temmuz 2012, 16:18:23
Karakteri gönderen tarafın istediğimiz karakteri göndermesini sağlayabilirsek çok kolay görünüyor...
Aksi halde uğraştırıcı bi probleme benziyor :)

http://documentation.renesas.com/doc/products/region/rtas/mpumcu/apn/autobaud.pdf (http://documentation.renesas.com/doc/products/region/rtas/mpumcu/apn/autobaud.pdf)
Başlık: Ynt: Asenkron Seri Port (8N1) Baudrate bulucu
Gönderen: yamak - 16 Temmuz 2012, 16:59:39
Hocam karşı tarafın Çalışma frekansı ve gelen datanın kaç bitlik olduğu(data,parity,stop bit) biliniyorsa hesaplanabilir bence. Çünkü işlemcinin içindeki baudrate generator baudrate hızının 16 katında pulse üretiyor. Sonra uart birimi bu pulseları sayıyo ve her 16 pulse da bir gönderilecek datanın bir bitini oluşturuyor. Mesela baud rate 19200 e ayarlanmışssa ve işlemci 50 mhz de çalışyosa baudrate generator (50*10^6)/(19200*16)=163 ten her 163 cycle da bir bir pulse üretmiş olacak. Bu şekilde 10 bitlik bir frame(1 stop bit,8 bit data,1 stop bit) in oluşması 163*16*10=26080 cycle sürmüş olacak. Bu da 50 mhz bi işlemcide (1/(50*(10^6)))*26080 sn sürer. Bu formülle beraber karşı taraftan iki frame arası süre hesaplanarak baud hızı bulunabilir bence.
Başlık: Ynt: Asenkron Seri Port (8N1) Baudrate bulucu
Gönderen: Erol YILMAZ - 16 Temmuz 2012, 17:13:12
(http://a.pololu-files.com/picture/0J1360.350.jpg?4660d1a51c0d61d9b887ce99b3b1a87e)

gönderilen herhangibir karakter için herhangi bir hızda, neresinin START neresinin STOP olduğunu nasıl anlayacağız ?
Başlık: Ynt: Asenkron Seri Port (8N1) Baudrate bulucu
Gönderen: z - 16 Temmuz 2012, 17:22:23
Bunun için seri porttan en bir süre dataların geliyor olması gerekir.

I/O port  yada capture pinlerle seri bilginin en kısa palsının süresi ölçülür. Buna T diyelim.

T, T/2, T/3 ... T/9 süreleri için sıra ile baud rate ayarlanır ve seri datalar UART ile dinlenir. Framing error alınmayan durumda baud yakalanmış demektir.

Başlık: Ynt: Asenkron Seri Port (8N1) Baudrate bulucu
Gönderen: yamak - 16 Temmuz 2012, 17:22:26
Alıntı Yapgönderilen herhangibir karakter için herhangi bir hızda, neresinin START neresinin STOP olduğunu nasıl anlayacağız ?
Hocam evet düşündüm de bunu herhangi bir karakter için anlayamayız. Dediğiniz gibi bir süre karşı tarafın bizim istediğimiz harfleri göndermesi gereki.Mesela ascii kodu 0 olan \0 karakteri gibi :). Ya da ascii kodu 85=10101010 olan karakter de olabilir.
Başlık: Ynt: Asenkron Seri Port (8N1) Baudrate bulucu
Gönderen: OG - 16 Temmuz 2012, 18:07:10
Uğraştıracak gibi görünüyor, kolay olur sanıyordum.
Başlık: Ynt: Asenkron Seri Port (8N1) Baudrate bulucu
Gönderen: camby - 16 Temmuz 2012, 18:33:25
Microchip EUSART birimlerinde de bu özellik var , kullanmadım ama okuduğum kadarıyla başlangıçta istenilen karakterin ( 10101010 ) gönderilmesi yeterli. Alıcı bir timer ile baud için gerekli olan parametreleri çıkartıyor , yada kendi yerine yerleştiriyor..

Benim kullandığım sistemde başlangıçta böle bir karakter göndermeme olanak yoktu , kullanamadım.

8N1 ne oluyor ?
Başlık: Ynt: Asenkron Seri Port (8N1) Baudrate bulucu
Gönderen: serdararikan - 16 Temmuz 2012, 18:41:10
evet 10101010 verisi TX den RX e başlangıçta gönderilirse en kısa kare dalganın periyot u tesbit edilerek baudrate hesaplanabilir.
Başlık: Ynt: Asenkron Seri Port (8N1) Baudrate bulucu
Gönderen: serhat1990 - 16 Temmuz 2012, 18:41:48
Alıntı yapılan: camby - 16 Temmuz 2012, 18:33:25
Microchip EUSART birimlerinde de bu özellik var , kullanmadım ama okuduğum kadarıyla başlangıçta istenilen karakterin ( 10101010 ) gönderilmesi yeterli. Alıcı bir timer ile baud için gerekli olan parametreleri çıkartıyor , yada kendi yerine yerleştiriyor..

Benim kullandığım sistemde başlangıçta böle bir karakter göndermeme olanak yoktu , kullanamadım.

8N1 ne oluyor ?

Hocam 8 bit data , eşlik biti yok , 1 bit stop biti ...
Başlık: Ynt: Asenkron Seri Port (8N1) Baudrate bulucu
Gönderen: bocek - 16 Temmuz 2012, 22:06:23
şurda bir çalışma var ama AVR için:
Automatic Baudrate Converter (http://spritesmods.com/?art=autobaud)