seri iletişimle ilgili bir sorun

Başlatan private_korsan, 09 Kasım 2010, 18:36:59

justice_for_all

mail adresim yaziyo imza kisminda yardima ihtiyacin olursa mail at yada ozel ileti atarsin
Iyi calismalar...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

private_korsan

hocam çok çok teşekkür ederim merak ettim acaba hangi şehirdesiniz?

justice_for_all

ben adanaliyim Kocaeli unversitesi elektronik ogrt. mezunuyum..

Hocam...

sen nerelisin peki...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

private_korsan

ben izmirliyim şu an adanada mı yaşıyorsun?

justice_for_all

Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

private_korsan

                DEFINE OSC 4		
		DEFINE HSER_RCSTA 90h 
		DEFINE HSER_TXSTA 24h 
		DEFINE HSER_SPBRG 25  
		DEFINE HSER_CLROERR 1 
		SYMBOL GIE  =INTCON.7   
		SYMBOL PEIE =INTCON.6   
		SYMBOL RCIE =PIE1.5     
		SYMBOL RCIF =PIR1.5 
                OPTION_REG = %10000000
   	    INTCON = %11000000  
         
		RCIE=1
		PEIE=1
		GIE=1
		RCIF=0
       
        ON INTERRUPT  GoTo  SERI_KESME
        Enable

anadongu:
            .........
           ..........
          goto anadongu


Disable
SERI_KESME:

        IF RCIF = 1 Then
          RCIE = 0
          RCIF = 0
          HSerin [sec]
          IF sec="z" Then GoSub bagot:GoTo hazirbir 
            
          RCIE = 1 
        EndIF

        Resume


ben bu işi iyice çorbaya döndürdüm işin içindende birtürlü çıkamadım nerede hata yapıyorum acaba lütfen yardım

neural

Hata tam olarak nedir?
Yani program mı derlenmiyor, algoritma mı hatalı?

Kesme içinde gelen veriyi sec = RCREG diyede okuyabilirsiniz.

justice_for_all

programın nasıl calısmasını istiyosunuz ki...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

private_korsan

şu hali ile sürekli kesme geliyor gibi davranıyor fakat pc den hiç birşey göndermiyorum göndersemde bişey değişmiyor

private_korsan

DEFINE  OSC  4
		DEFINE  HSER_RCSTA      90H
		DEFINE  HSER_TXSTA      20H
		DEFINE  HSER_BAUD       9600
		DEFINE  HSER_SPBRG      6 
        	DEFINE HSER_CLROERR 1
      SYMBOL GIE  =INTCON.7   
      SYMBOL PEIE =INTCON.6   
      SYMBOL RCIE =PIE1.5     
      SYMBOL RCIF =PIR1.5
          OPTION_REG = %10000000
          INTCON = %11000000   
      RCIE=1
      PEIE=1
      GIE=1
      RCIF=0
        ON INTERRUPT  GoTo  serikesme
        Enable	
		INCLUDE "modedefs.bas"	
		DEFINE ADC_BITS 10
		DEFINE ADC_CLOCK 1    
		DEFINE ADC_SAMPLEUS 10
    	ADCON1=%10000010
    	BAUD CON 84
                TRISA=255
		TRISD=%00000000
		TRISC=%10000000                
		TRISB=%00000010	
		TRISE=%101
bas:
                 IF sec="y"  then SerOut2 PORTB.0,BAUD,["d"]
		 IF sec="a"  GoSub bir
		 IF sec="b"  GoSub iki
                 IF sec="z" Then GoSub bagot:GoSub hazirbir
        GoTo bas
............
...........
Disable
serikesme:

        IF RCIF = 1 Then
          RCIE = 0
          RCIF = 0
          HSerin [sec]  
          RCIE = 1
        EndIF
          Resume 
          enable		
		End


uzun uğraşlar sonunda kodları bu hale getirdim fakat programda hiç bir zaman kesme oluşmuyor acaba nerde hata yapıyorum yardım edecek arkadaşlara şimdiden teşekkür ederim

private_korsan

anlaşılan burda kaldı bu iş yardım yok fikir yok aklımada bişey gelmiyo yok mu daha önce bu tarz uygulama yapmış kimse

justice_for_all

arkadasim pic basic bilmedigim icin kodlarda yalnislik varmi bilemiyorum C biliyosan onda istedigin kadar yardim ederim...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

private_korsan

teşekkür ederim sağolasın çok yakında inşallah başlıcam c 'ye ama şu anda bilmiyorum

justice_for_all

eger internette arastirirsaniz bol bol picbasic ile ornek bulabileceginize inaniyorum...Kolay gelsin
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

neural

#29
Kesme oluşması için USART modülünü kesmeleri açmadan ilgili değerlerle ayarlamanız gerekir. ( Baud hızı, sürekli alım gibi) Kullanmış olduğuz pic basic dilinde Hserin komutu bu iş için kullanılıyor. Ancak benim tavsiyem Hserin kolay olmasına rağmen kullanmamanız. Aşağıdaki örneği inceleyiniz.

Device 16F877
SYMBOL GIE  =INTCON.7   
SYMBOL PEIE =INTCON.6   
SYMBOL RCIE =PIE1.5     
SYMBOL RCIF =PIR1.5

' değişken tanınlamaları
dim sec as byte

on interrupt goto kesme

TRISA = %11111111
TRISB = %11111111
TRISC = %10111111
gosub usrinit

RCIF = 0
RCIE = 1
INTCON = %11000000  ' enable komutunu kullanmaya gerek yok çünkü 
					' intcon kaydediciyle açıyoruz

loop:
	nop
	'
	' Kontrol işlemlerini 
	' burada yapınız
	'
	'
	'
	goto loop

disable
kesme:
	if RCIF = 1 then
		RCIF = 0
		sec = RCREG
	endif
' Başka kesmeleride aktif yapıp kullanabilirsiniz
	'if BASKAKESMEBAYRAĞI = 1 then
	     '
	     '
	     '
	'endif  
	'
resume	
enable

usrinit:
	rcsta = 0b10010000	' spen=1 cren=1	
	Spbrg = 25			' baudrate ayarla 9600bps 
	txsta = 0b00000100	' txen=0 brgh=1
return
	

	end