Uart ile veri okurken ilk iki bayt rastgele değer alıyor

Başlatan Mucit23, 25 Şubat 2012, 22:02:19

Mucit23

Merhaba arkadaşlar.
RFID modüllerle uğraşıyorum
18F452 ve Uart üzerinden haberleşirken okuduğum ilk iki bayt almam gereken veriden bağımsız olarak rastgele değerler alıyor. Yani Diyelim 8 bayt lık veri okumam gerekiyorsa okuduğum veri $81,$81,$XX,$XX,$XX,$XX,$XX,$XX şeklinde oluyor veya $60,$E0,$XX,$XX,$XX,$XX,$XX,$XX  gibi değer okuyorum. Modüllden alakası yok RFID modül düzgün çalışıyor. Modülü Devreden ayırdığım halde yine aynı şekilde ilk iki bayt farklı değerler geliyor. Bunun sebebi ne olabilir. Programı PBP ile yazıyorum

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Mucit23

Alıntı yapılan: OG - 25 Şubat 2012, 22:15:14
28. satırda problem olabilir.

Pardon hocam haklısınız.

DEFINE OSC 4

asm 
    __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H
    __CONFIG _CONFIG2L, _BOR_ON_2L & _BORV_20_2L & _PWRT_OFF_2L
    __CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
    __CONFIG _CONFIG3H, _CCP2MX_ON_3H
    __CONFIG _CONFIG4L, _STVR_ON_4L & _LVP_OFF_4L & _DEBUG_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H 
endasm

TRISA=%00000001
TRISB=%00000000
TRISC=0:TRISD=0
TRISE=0
PORTA=0:PORTB=0
PORTC=0:PORTD=0
PORTE=0

ADCON0=0

    DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
    DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
    DEFINE HSER_SPBRG 25  ' 9600 Baud @ 4MHz, 0,16%
    DEFINE HSER_CLROERR 1 ' Clear overflow automatically
    DEFINE HSER_BAUD 9600 ' BaudRate 9600
    DEFINE LCD_DREG		PORTB 'LCD Data portu PORTB'ye bağlı	
    DEFINE LCD_DBIT		0	  'LCD Data bacakları Portb.0'den başlıyor	
    DEFINE LCD_RSREG	PORTB 'LCD RS bacağı PORTB'ye bağlı	
    DEFINE LCD_RSBIT	4	  'LCD RS bacağı PortB.4'ye bağlı
    DEFINE LCD_EREG		PORTB 'LCD Enable Bacağı PORTB'ye bağlı	
    DEFINE LCD_EBIT		5	  'LCD Enable Bacağı PortB.5'e bağlı	
    DEFINE LCD_BITS		4	  'LCD 4 bit haberleşiyor
    DEFINE LCD_LINES	2     'LCD 2 Satır..
    
  X      VAR WORD
  ID     VAR BYTE[20]
  STX    CON $02
  ETX    CON $03
  NAK    CON $15
  ACK    con $06
  
CLEAR    
PAUSE 200
LCDOUT $FE,1  
BASLA:
  GOSUB DELAY
  LCDOUT $FE,$80,HEX2 ID[0],HEX2 ID[1],HEX2 ID[2],HEX2 ID[3],HEX2 ID[4],HEX2 ID[5],HEX2 ID[6],HEX2 ID[7]
  HSEROUT [STX,$02,$31,ETX]
  HSERIN 100,BASLA,[ID[0],ID[1],ID[2],ID[3],ID[4],ID[5],ID[6],ID[7]]
    HIGH PORTB.7
    FOR X=0 TO 50:PAUSE 1:NEXT
    LOW PORTB.7
GOTO BASLA

DELAY: 
  FOR X=0 TO 256:PAUSE 1:NEXT
RETURN

Mucit23

Hocam çözdüm galiba. İşlemcinin RX pinin giriş yapmayı unutmuşum. Ondan kaynaklanıyormuş.
Kızmayın. Unutmuşum işte neyapayım  :-[  ::) Şimdi düzeldi gibi

OG

Estağfirullah, ne kızması, hatırlatma.

Aceleye gelen işler basit olsa da sıkıntı oluyor.

Ayrıca gönderen pin, gönderimden önce olması gereken polaritede (true için H, invert için Low) değilse ilk byte lar problem çıkarabilir.  Daha önceki mesajlarda geçti, ben önce olması gereken polaritede mi diye kontrol ediyorum, değilse alışa başlatmıyorum.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

muhittin_kaplan


Mucit23

Alıntı yapılan: OG - 25 Şubat 2012, 22:32:53
Estağfirullah, ne kızması, hatırlatma.

Aceleye gelen işler basit olsa da sıkıntı oluyor.

Ayrıca gönderen pin, gönderimden önce olması gereken polaritede (true için H, invert için Low) değilse ilk byte lar problem çıkarabilir.  Daha önceki mesajlarda geçti, ben önce olması gereken polaritede mi diye kontrol ediyorum, değilse alışa başlatmıyorum.

Valla hocam Açıkçası ilk defa Uart ile uğraşıyorum. İşin okadar ayrıntısını bilmiyorum.  Modülün kataloğunda öyle birşey belirtilmemiş. Ama osiloskopla baktığımda herzaman high konumda belkiyor.

OG

Evet UART kullanılınca, UART modul açıldığı an High olur.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Mucit23

Bu Birazda modülle Alakalı ama Problem olurmu peki?

Mucit23

Bi dk peki ben ilk başta RX pinin çıkış yaptığım halde neden hala bir iki bayt sonrada olsa veriyi okudum. Acaba Uart RX pini giriş olarakmı tanımlıyor.

OG

Alıntı YapBu Birazda modülle Alakalı ama Problem olurmu peki?

Hayır, olması gereken o zaten.
Aslında benim söylediğim UART olmadan (yazılımsal ) haberleşme durumlarında daha çok önem kazanır. Çünkü ilgili pin başlangıçta ters polaritede olabilir.


Alıntı YapBi dk peki ben ilk başta RX pinin çıkış yaptığım halde neden hala bir iki bayt sonrada olsa veriyi okudum. Acaba Uart RX pini giriş olarakmı tanımlıyor.
Modül haberleşmeye açıldığı  anda RX pini giriş, TX pini çıkış atanır diye hatırlıyorum
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Mucit23

Anladım hocam. Problem yok ozaman. Çalışmalara Devam  8)