Yüksek Hızda Seri İletişim (Yazılımsal)

Başlatan OG, 11 Kasım 2006, 23:06:16

OG

Yok üstad, 250.000 tarafı senin de malumun DMX tarafı. Orada sorun yok. Alınan bu datayı soft pwm üreteci olan diğer başka bir pic'e aktarmak için çok hızlı olarak düşündüğüm 25.000 rakamı. Tabi bu software hız için geçerliydi. Artık haberleşmeyi donanım ile yapmak zorunda kalacağımdan bu 25.000 hızı artık çok daha yukarılara çekebiliriz.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

picusta

Hocam, bildigim kadari ile 12F629'de 2 timer var.
Birini PWM zaman dilimi, digerini seri iletisim için kullanabilirsiniz. Data alimi için pinlerdeki interrupt on change özelligini kullanin.
Anladigim kadari ile Basic'te SERIN SEROUT komutlari zamanlama için islemciyi döngüde bekletiyor (belki interruptlari da kapatiyor).
Görünen o ki interrupt driven kod yazmalisiniz, bloke eden fonksyonlariniz olmamali.

mhk

@OG Hocam... Donanımsal olarak usart kullandığım , daha öncede burda yayınladığım RGB projesi vardı. Bilgisayardan ayarlanarak 3 farklı led'i kesme kullanarak pwm ile sürmüştüm. Bu proje pbp kodu:

intcon=%10100000
option_reg=%10000011
on interrupt goto kesme
@ device pwrt_on & MCLR_OFF
@ device INTRC_OSC_NOCLKOUT
@ device WDT_OFF
define osc 4
cmcon=7


TRISA = %11111111		' PORTA   giriş
TRISB = %11000010   ' PORTB çıkış
porta=0
portb=0        
pause 500

'********************* Değişken tanımlamaları **********
zamkirmizi var byte
zamyesil var byte
zammavi var byte

bilgi var byte

kirmizi var portb.3
mavi var portb.4
yesil var portb.5
zaman var word
kirmizieksi var byte
mavieksi var byte
yesileksi var byte
zampwm var byte
tekrar var byte
verial var byte
verigonder var byte
kirmiziaktif var byte
yesilaktif var byte
maviaktif var byte


'******** DEĞİŞKEN İLK DEĞERLER ************
zaman=0
zampwm=0
kirmizieksi=0
mavieksi=0
yesileksi=0
kirmiziaktif=0
yesilaktif=0
maviaktif=0
bilgi = 0
tmr0 = 0

SPBRG=25		' Set baud rate to 9600  4MHz
RCSTA=%10010000	' Enable serial port and continuous receive
TXSTA=%00100100	' Enable transmit and asynchronous mode


'************* GİRİŞ ÇIKIŞ TANIMLAMALARI ************
zamkirmizi = 200: zamyesil = 230: zammavi = 10
kirmizi=0:mavi=0:yesil=0
'///////////////// ANA PROGRAM \\\\\\\\\\\\\\\\\
'///////////////// ANA PROGRAM \\\\\\\\\\\\\\\\\
 tmr0 = 0
basla:


   if tmr0>zamkirmizi then kirmizi=1
   if tmr0>zammavi then mavi=1 
   if tmr0>zamyesil then yesil=1
 


goto basla
'**********************************************

disable
kesme:
 
kirmizi=0
mavi=0
yesil=0
  
  if RCSTA.1 = 1 then RCSTA.4 = 0:RCSTA.4 = 1
    If PIR1.5 = 1 Then                      ' If receive flag then...
          verial = RCREG                    ' ...get received character to B1
          if verial=1 then kirmiziaktif=1:yesilaktif=0:maviaktif=0
          if verial=2 then kirmiziaktif=0:yesilaktif=1:maviaktif=0
          if verial=3 then kirmiziaktif=0:yesilaktif=0:maviaktif=1
          
          PIR1.5 = 0
     EndIf

          if kirmiziaktif=1 then zamkirmizi=verial 
          if yesilaktif=1 then zamyesil=verial 
          if maviaktif=1 then zammavi=verial 

tmr0=0
intcon.2=0
resume

END
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana