Pic basic ile 38400 baud hızı nasıl elde ederim

Başlatan trilian, 11 Mayıs 2012, 16:39:01

trilian

arkadaşlar picbasic serout2 ile 19200 baud da kadar kod var ama 38400 e yok eger bir yol bilen varsa yardımcı olmasını bekliyorum kaç mhz kristal ve kod nasıl olmalı olumlu cevaplar bekliyorum

Mucit23

Üzerinde Usart  modülü bulunun piclerden edinmen gerekir.

20Mhz Kristal ile aşağıdaki tanımlamaları yaparak usartı 38400 e ayarlamış olursun.

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 32  ' 38400 Baud @ 20MHz, -1,36%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

Bu işler için Tavsiyem PicMultiCalc isimli programı kullanman. Birtek bu iş için değil birçok yerde lazım oluyor. Forumda var.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

trilian


trilian

pardon unuttugum bir nokta var işlemci 2 hızda baglanmak zorunda hem 9600 hemde 38400de 9600 de iken kod yollayıp 38400e geçecek 38400e geçince kendini 38400e göre ayarlayacak 9600e geçince 9600e göre ayarlanacak

trilian

define osc 4
basla:
SEROUT2 GPIO.5,84, ["OK9600"]
pause 1000
SEROUT2 GPIO.5,32, ["OK19200"]
pause 1000
SEROUT2 GPIO.5,6, ["OK38400"]
pause 1000
goto basla

burda 19200 e kadar sorun yok ama bana en önemlisi 38400 bunuda soft olarak halletmem gerek
SEROUT2 GPIO.5,6, ["OK38400"] saçma sapan kodlar gidiyor
hesap tablosunda 1000000/baud-20 yazıyor buna göre 6 denk geliyor

trilian

hoc
Alıntı yapılan: Mucit23 - 11 Mayıs 2012, 17:40:05
Üzerinde Usart  modülü bulunun piclerden edinmen gerekir.

20Mhz Kristal ile aşağıdaki tanımlamaları yaparak usartı 38400 e ayarlamış olursun.

DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_SPBRG 32  ' 38400 Baud @ 20MHz, -1,36%
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

Bu işler için Tavsiyem PicMultiCalc isimli programı kullanman. Birtek bu iş için değil birçok yerde lazım oluyor. Forumda var.


hocam denedim ama gönderdiğim bilgi dogru gitmiyor hatta donuyor gibi geldi bana
EROUT2 GPIO.5,6, ["OK38400"] preteusta bunu simule ettim dogru gidiyor gibi ama pice yüklediğimde saçmalıyor


ete

Serin veya serout komutlarında baud rate parametresini aşağıdaki şekilde hesaplayın.
Parametre=(1.000.000/baud)-20
Örnek yapalım
Parametre=(1000000/9600)-20=84
Parametre=(1000000/38400)-20=6

Ete


trilian

Alıntı yapılan: ete - 13 Mayıs 2012, 10:52:34
Serin veya serout komutlarında baud rate parametresini aşağıdaki şekilde hesaplayın.
Parametre=(1.000.000/baud)-20
Örnek yapalım
Parametre=(1000000/9600)-20=84
Parametre=(1000000/38400)-20=6

Ete


Hocam denedik yanlış gidiyor
4 mhz de ve 20 mhz dede denendi

trilian

Alıntı yapılan: trilian - 12 Mayıs 2012, 13:44:27
define osc 4
basla:
SEROUT2 GPIO.5,84, ["OK9600"]
pause 1000
SEROUT2 GPIO.5,32, ["OK19200"]
pause 1000
SEROUT2 GPIO.5,6, ["OK38400"]
pause 1000
goto basla

burda 19200 e kadar sorun yok ama bana en önemlisi 38400 bunuda soft olarak halletmem gerek
SEROUT2 GPIO.5,6, ["OK38400"] saçma sapan kodlar gidiyor
hesap tablosunda 1000000/baud-20 yazıyor buna göre 6 denk geliyor
aynı hesabı yaptıgımı yazmıştım hocam
12f675 ve 16f628 de denendi

ete

kodları yollayın bakayım. Nasıl gidiyormuş.
Baud Rate kelimesi birim zamanda yollanan bit sayısını ifade eder. Bit sayısı arttıkça işlemcinin bunu yerine getirmesi için gereken clock frekansı da artmalıdır. Tabiiki bu söylediğim 9600 den büyük değerler için geçerlidir. Örneğin sizin verdiğiniz 38400 için kesinlikle 4 Mhz kristal frekansından daha yüksek frekanslar gerekir. Sİz hep 4 Mhz de bu işleri yapıyorsanız çalışmamasının sebebide frekanstır. 38400 için ideal frekans 16Mhz olarak gözüküyor. Bu frekansta hata yüzdesi %0,16 olarak gerçekleşirki bu ideal bir değerdir.

Aynı denemeleri 16Mhz de yapın bakalım şaşma olacakmı.
Verdiğim formül doğrudur ve hızı artırırsanız sistem çalışacaktır.

Ete

trilian

Alıntı yapılan: ete - 16 Mayıs 2012, 07:36:40
kodları yollayın bakayım. Nasıl gidiyormuş.
Baud Rate kelimesi birim zamanda yollanan bit sayısını ifade eder. Bit sayısı arttıkça işlemcinin bunu yerine getirmesi için gereken clock frekansı da artmalıdır. Tabiiki bu söylediğim 9600 den büyük değerler için geçerlidir. Örneğin sizin verdiğiniz 38400 için kesinlikle 4 Mhz kristal frekansından daha yüksek frekanslar gerekir. Sİz hep 4 Mhz de bu işleri yapıyorsanız çalışmamasının sebebide frekanstır. 38400 için ideal frekans 16Mhz olarak gözüküyor. Bu frekansta hata yüzdesi %0,16 olarak gerçekleşirki bu ideal bir değerdir.

Aynı denemeleri 16Mhz de yapın bakalım şaşma olacakmı.
Verdiğim formül doğrudur ve hızı artırırsanız sistem çalışacaktır.

Ete

16 mhz de denemedim hocam
4 ve 20 mhz de ama şu an çözdüm ama 16 mhz de tekrar deneyecem aralarda hatalı göndermeler oluşuyor

trilian

4 mhz de zaten tamamen alakasız veriler gidiyor 20 mhz de de tam gitmiyor

ete

Her zaman söylüyorum PicMultiCalc.exe isimli programı kullanın. İşinize yarayacak her şey var.
Aynı şekilde USART hesaplamasıda var. Hangi frekansların daha uygun olduğunu USART calc kısmında anında görebiliyorsun.
20 Mhz de %1,72 hata oranı çıkıyor. Bu genellikle sınır noktasıdır. Haberleşme olur ancak arada bir hata çıkabilir demektir. Hata oranının 1 den küçük olması yeğlenir. 16 Mhzde hata oranı %0,16 olarak çıkıyor. Bu ise ideal noktayı gösteriyor.

Ete

trilian

16mhz burda bulmak biraz zor sipariş edecem internetten bakacam hocam

Powered by EzPortal