pic16f628a ve diger malzemelerin hız problemi

Başlatan canbulut, 23 Aralık 2011, 23:23:03

canbulut

s.a arkadaslar pic16f628a ile kristali 20mhz'de tutup 38400 hıza çıkmak mümkünmü?yada 19200 bauda...ve pc817 ne kadar hızlıdır?pic16f628a ve pc817 hızlı değilse yerine muadilleri olarak ne kullanabiliriz?mesela benim problemim 10ascii karekteri arka arkaya alırken problem yok fakat  20 karekter ve fazlasını alırken sorun olabiliyor.

hazad

okuldayken hocamız 628'in 50Mhz çalıştırıldığını duymuştum dedi. ama bu datasheet'in de yazmadığına göre çok güvenilir olucağını sanmıyorum çalışsa bile.

ErsinErce

Datasheet te 78. sayfada BAUD RATES FOR ASYNCHRONOUS MODE bölümü var oraya gözatarsan cevabını bulacaksın,
bit hızına göre işini gören HCPL serisi bir optokuplör ile istediğin izolasyonu sağlarsın

z

#3
Overrun sorunu yaşıyor olabilirsiniz. Transmit eden ünite stop bitini takipen derhal bir sonraki veriyi yollarken alıcı taraf yüksek veri hızından dolayı ard arda gelen verileri alıp bunları depolamada gecikirse RX ünitesinde okunmayı bekleyen veri üstüne bir ikincisi daha geldiğinde bahsettiğiniz sorun oluşacaktır.

Interrupt rutinini olabildiğince sade ve oyalanmayacak türde kodlarla yazmanız sorunu çözmenizi sağlayabilir.

Yada CPUnun işi gücü bırakıp,  tüm dikkatini seri porta vermesini sağlayıp veri transferi bitene kadar diğer işleri askıya alması düşünülebilir.

Eğer karşılıklı RX tarafı ile TXbaud rate değerleri arasında küçük bir fark varsa bu zaman start + data + stop paketinde hattın yanlış noktalarda örneklenmesine de neden olabilir.
Bu durumda xtal değerini değiştirmekten başka çözüm kalmaz.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Maxim

baudrate hız hesabı var
buna göre 16F628A 20mhz osc ile

9600-19200 bps ile hata oranı %0.16
34800 - 57600 -115200 ile %-1.36


eusart çıkışı olan bir pic ile bu değerler
9600 kbs ile hata oranı %-0.03
19200 - 38400 ile %0.16
57600 ile %-0.22
115200 ile %0.94


OG

USART ile çok daha yukarı çalışabilir, USART olmadan 47619'a kadar.

http://hotfile.com/dl/138404199/ef614bf/PicMultiCalc.exe.html

Bu programcık ile hesaplayabilirsiniz.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

canbulut

#6
Alıntı yapılan: ErsinErce - 24 Aralık 2011, 03:24:05
Datasheet te 78. sayfada BAUD RATES FOR ASYNCHRONOUS MODE bölümü var oraya gözatarsan cevabını bulacaksın,
bit hızına göre işini gören HCPL serisi bir optokuplör ile istediğin izolasyonu sağlarsın

evet baktımda burdaki error yazısı altında + olması - olması veya 0(sıfır) olması ne anlama geliyor.ayrıca 1250k'ya kadar hız diyor o zaman burda.bu gerçek değil heralde...sadece teorik olsa gerek.ayrıca error 0'a yakın olmalı desek en yüksek 1250k baud olsa o sıfır zaten en yüksek hızda hatasız olması mümkün olmamalı çünkü biz hep hız ne kadar düşük olursa o kadar hatasız veri iletişimi olur diye okuduk buralardan.
http://

-Hasan-

Mesela 9600 baud ' u seçtiğinizde:

ERROR +0.16% diyor. Yani 20 Mhz ' de SPBRG ' ye 129 yüklediğinizde baudrate ' nin tam 9600 değil de 9600 ' ün %0.16 ' sı kadar fazla olacağını (+ işaretinin anlamı %0.16 ' sı eklenecek demek oluyor) demek istiyor. Bu durumda; 9600 ' ün %0.16 ' sını hesaplarsak:

9600 * 0.16 / 100=15.36

bu sayıyı 9600 ' e eklersek (işaret + olduğu için)

9600 + 15.36 = 9615.36 ~9615


gerçek baudrate 9600 değil de 9615 olacaktır.




Mesela bu sefer de 38400 ' ü seçelim:

ERROR -1.36% diyor. Yani 20 Mhz ' de SPBRG ' ye 32 yüklediğinizde baudrate ' nin tam 38400 değil de 38400 ' ün %1.36 ' sı kadar az olacağını (- işaretinin anlamı %1.36 ' sı çıkacak demek oluyor) demek istiyor. Bu durumda; 38400 ' ün %1.36 ' sını hesaplarsak:

38400 * 1.36 / 100 = 522.24

bu sayıyı 38400 ' den çıkarmamız gerekiyor (işaret - olduğu için):

38400 - 522.24 = 37877.76 ~37878


gerçek baudrate 37878 olacaktır.

KBAUD kısmında bu hataların hesaplanmış halinin Kilobaud olarak hali yazıyor oraya da bakabilirsiniz.  Mesela 38400 ' de 37.878 yazmışlar, görüldüğü gibi bu da bulduğumuz değerin Kilobaud hali.




Görüldüğü gibi baudrate yükseldikçe hata payı artmaktadır. Ama siz 2 tane aynı frekansta çalışan 16F628 ' i haberleştiriyorsanız iki PIC ' de aynı hatayı yapıp, aynı baudrate ' lerde çalışacağından hata 0 olmuş olur yani; iki 16F628 sorunsuz haberleşebilir. Ancak haberleşme başka bir yer ile yapılıyorsa; (bilgisayar, başka bir mikrodenetleyici...) bu durum sorun çıkarabilir.

canbulut

ben bu işlemi şöyle yapyorum...dahili osc ile çalışan 16f628a ile 20mhz ile çalışan 16f873a işlemcisine bilgi yolluyorum..heralde burda dediğiniz baud farkı olacak arlaarında.değerli bilgiler için tşekkrler.

OG

İki pic de aynı sapma miktarında olduktan sonra problem yok, sıfır hata ile haberleşirler.

Bir pic, PC gibi harici bir sistem ile veya aynı marka/seri olmayan başka bir işlemci veya benzer şekilde plc gibi bir cihazla haberleşirse, o zaman diğer sistemin hangi hata oranında haberleştiği (veya hatasız olması) önem kazanır.

Sistemin birisi + tarafta sapma, diğeri - tarafta sapma yapıyorsa aradaki fark artar, yani sapmalar toplanmış olur.

Seri iletişimin sağlıklı olması için kitaplar %10 gibi bir sapma sınırı yazıyorlar ama ne kadar gecerlidir bilmiyorum.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.