E

DMX512

Başlatan ELZEMEFE, 30 Ocak 2012, 00:39:48

ELZEMEFE

Merhaba arkadaşlar  uzun süredir  üzerinde uğraştığım. dmx  protokolü mantığını anladım fakat ..
PC kontrollü yapmaya çalıştığım için ..

dmx hakkında ufak bir bilgi vereyeyim
250000 baud hızında 8n2 modunda sadece veri başlamadan  önce belirli bir  bekleme ve başlangıç protkolü var..

http://www.dmx512-online.com/packt.html

Aslında bu konuyu buraya yazmak  istemiyordum biraz daha geliştirmeden farklı form sitelerinde yazdım ve
alınan cevaplar : biyerden sonra yok işte ticari felan şu bu her neyse

Arkadaşlar dmx ışık sahne sistemlerinde  kullanılıyo fakat pc kontrolü yok var oanda uçuk fiyatlar .. ama ben PC kısmını biitrmek üzereyim..  rs232 ile PIC ile haberleşip veriyi dmx protkolüne çevirip rs485 ile göndereceğim buraya kadar sorun yok ..

fakat 250000 baud hız biraz beni yordu diyebilirm açıkcası anlamkta güçlük çektim..
ben 877 kullanarak veya 18f452 kullanarak 250kbaud 8n2 modunda  gönderip alabilrmiyim

http://www.mikroe.com/eng/chapters/view/58/chapter-10-uart-module/#ch10.1
bu sitedeki 20 mhz deki tabloya göre alabilirm görünüyo
ama farklı formlarda olmaz şu bu farklı yorumlar gördüm



nette baudrate hesaplayıcı  buldum bir adet onunla hesapladım ve tablo ile karşılaştırdım.. olur gibi





ELZEMEFE

vay beee  kimse duymamış demekki

ELZEMEFE

Arkadaşlar  877, 628, 876,18f452 PIC leri için 250Kbaud  için hserin veya hserot için fikri olsun birinin ne olur yaaa...

ete

Bütün Baud hesapları 115200'e kadar verilmiş ki bu hızda da hata oranı epeyce artıyor.
Bahsini ettiğin hızlara çıkmak için işlemcilerin 40-80 - 120 Mhz hızlarda çalışması gerekir sanırım.
Üstelik (N2 standart bir format değil. 2 stop biti de nereden çıkmış bunun nasıl ayarlanabileceğini bile bulamadım.
Bu nedenlerden dolayı cevap alamayorsun sanırım.

Ete

ELZEMEFE

#4
Ete hocam her bir data 4 mikrosaniye  olduğunu göre  for döngüsüne sokup değişkenin her bir bitini  4 mikrosaniye  bekletip yollasak aynı olurmu acaba

örnek
for i=0 to 7
portb.0=x.0
pauseus 4
next i

gibi.. burda yapma çalıştığım şey x değişkenin her bitini sıra ile 4 miksrosaniye bekletip portb.0 a
  vermek     oldu
edit:örnektir hatalı olabilir.

ete

Döngü komutu ve diğer komut gecikmeleri 4us den fazla tutar ve zamanlama şaşar.
Ete

ELZEMEFE

#6
250 000 baud hız  için SPBRG  ayarları ve hasapları buldum .. 628A  877A  USART  modulunun kitaplarda ve yaptığım araştırmalara göre bu hıza çıkabildiğine  ulaştım ama bu konuda tecrübeli  olmadığım için pek bişey  diyemiyorum .. ama bilgi ve hesaplamalar aşağıdaki gibi usart  modulu için
20 mhz de ve 16 mhz de 250 kbaud hıza çıkabilme ihtimali var

    --------ASENKRON İLETİŞİM---------------

  16 MHZ                                        20 MHZ ve 16 mhz
BRGH=0                                       BRGH=1

Baud hızı=osc/(64(x+1))             Baud hızı=osc/(16(x+1))

baud hızı=250 000                     baud hızı=250 000
osc         =16 000 000 hz            osc         =20 000 000 hz
                                                   osc         =16 000 000 hz
işlem sonucunda x=0                     
yani spbrg değeri=0 olur              20mhz için   spbrg değeri=4 olur
                                                    16 mhz için  spbrg değeri=3 olur

hata=((hesaplanan baud  -istenen baud )/istenen baud)%100

bu hesaba göre hata yok ..

edit:burdaki tüm bilgiler 2 farklı kitabın bilgileri derlenerek anlatılmıştır
       kitaplar : PIC PROGRAMLAMA TEKNİKLERİ VE PIC16F877A
                    :Mikrodenetleyiciler ve PIC programlama PIC16F628A





ete

Elzemefe,

16F628 bilgi kağıdına baktım. Normal şartlarda 20 Mhz kristal ile 250KBaud hızlara çıkabiliyorsun.
Bu hızda hata oranıda sıfır. Yapman gereken şu ayarları işlemciye vermek;
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
DEFINE HSER_SPBRG   4  ' 250Kbaud 20 Mhz.
DEFINE HSER_CLROERR 1 ' Clear overflow automatically

Ancak bu sistem 8N1 olarak çalışır. 8N2 olarak ayarlanabilecek bir yer bulamadım.

Ete

skara1214

buradaki timingle microchipin an612 application notundaki timing chartı birbirinden farklı.Buradan bir sıkıntı çıkıyor olabilir.Ayrıca fikrim kendin protokol yazman yani uart modulu kullanma bence.

Powered by EzPortal