YARDIM, Seri iletişim

Başlatan kasif, 29 Eylül 2004, 12:35:55

kasif

Kendim bir sistem yaptım, VB ile hazırladığım bir program com1 portundan 3 byte veri gönderiyor, seri bilgiyi alan işlemci bunları LCD(2x16) ekranda gösteriyor. Kablo 1 metreden kısa, diğer herşey normal. Ama sonuçlar bazen doğru bazen hatalı çıkıyor.
Bazı gönderdiğim değerler ve LCD de yazanlar.
123   189
100   178
32   144
64   160
128   192
Sonuçları 2lik sisteme çevirdiğimde hataların sola bir bit kayma ile oluştuğunu gördüm. Anlamadığım neden bazen hata yapıp bazen yapmadığı. Araya 433MHz modüller ile kablosuz olarak yaptığımda da ya doğru yada bu şekilde hatalı çıkıyor. 16F84 , 16F628 , 16F877 ile denedim hepside aynı hata ile karşılaştım. Nerede hata yapıyorum ?

Not: Aynı pottan işlemci programlıyorum ve siemens s55 in data kablosunu kullanıyorum, hiçbir problem yaşamıyorum.

İşlemciye yüklü programın kodları.

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : Nedim KASIKIRIK                                   *
'*  Notice  : Copyright (c) 2004 Kasif .org                     *
'*          : All Rights Reserved                               *
'*  Date    : 08.08.2004                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
Include "modedefs.bas"

define LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
 
si  var  PORTD.1    'seri giriş ayağı
b1  var  byte
b2  var  byte
b3  var  byte

b1 = 0
b2 = 0
b3 = 0

serial:
    serin si,N9600,1000,islemler,b1,b2,b3 
goto islemler

islemler:
    LCDOUT $FE, 1, "1: ",#b1,"  2: ",#b2,$FE, $C0, "3: ",#b3
    pause 200
goto serial
End


VB kaynak kodları

Private Sub Command1_Click()
    MSComm1.Output = Chr$(Text1.Text)
    MSComm1.Output = Chr$(Text2.Text)
    MSComm1.Output = Chr$(Text3.Text)
End Sub

Private Sub Command2_Click()
   If MSComm1.PortOpen = True Then
    MSComm1.PortOpen = False
   End If
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.CommPort = 1
    MSComm1.PortOpen = True
End Sub

Private Sub Command3_Click()
    MSComm1.PortOpen = False
End Sub

Private Sub VScroll1_Change()
    Text1.Text = Str(VScroll1.Value)
    MSComm1.Output = Chr$(Text1.Text)
    MSComm1.Output = Chr$(Text2.Text)
    MSComm1.Output = Chr$(Text3.Text)
 End Sub
 Private Sub VScroll1_Scroll()
    VScroll1_Change
End Sub

axanc

merhaba arkadaşım...

serin komutu yerine Hserin komutunu kullan istersen, onun için yapılacak olan ayarları da pbp'un örneklerinde bulursun.. senin esas sorunun serin ile kullanılan sistem normal seri iletişim sisteminden farklı.. start bit'i ile ilgili bazı sorunlar çıkıyor bu sebeten bazen doğru-bazen yanlış sonuçlar veriyor.. ben de aynı sorunu yaşamamıştım... veya bu sorunu bilgisayardan gelen ve pic'in seri giriş bacağına invertor (tersleyici) bağla.. :)... umarım yardımcı olabilecek bilgiler vermişimdir...
Uzmanlık: Bilgisayar Müh. öğrenci Derleyici: PicBasic Pro Compiler Ver. 2.45 Program: Proteus 6.2.5 ve MCSP

kasif

Hserin yada pic in hardware özelliklerini kullanayım artık diyordum, hem sorun çözülmüş olur(olabilir) hemde hardware özellikleri denemiş olurum.

darkman

bence  lcdout $FE,1 den sonra biraz pause ekle ondan sonra lcd de göster veriyi

kasif

Uzunca bir aradan sonra tekrar buradayım, herkese merhaba,

Askerlikte bitti, devreden çıkmış oldu,

Arkadaşlar seri iletişim ile ilgili bir sorum olacak, ben serin-serout ve serin2-serout2 komutları ile (PIC 16F877) seri iletişimde bazı problemler yaşıyordum ve hserin-hserout ve ya hserin2-hserout2 kullanmayı düşünüyorum.

1. Bilgisayar için hazırladığım (visual basic de) programda değişiklik yapmam gerekir mi?

2. Bu komutlar (hserin - hserout - hserin2 - hserout2) ile picbasic de yapılmış örneklere ihtiyacım var tavsiyeleriniz veya gönderebileceğiniz örnekler var mı?

Not: Yeni konu açmak yerine başka konudan devam etmek daha uygun olur diye düşündüm, forumu şişirmek istemiyorum. Fakat ismi yanlış yazmışım, değiştiremiyorum  :cry: