RS232 ile giden bilgi RS485 ile gitmiyor.

Başlatan dyonizos, 26 Nisan 2016, 10:48:03

dyonizos

Selam arkadaşlar,
Aşağıdaki test kodlarımda 2 pic i birbirine bağladığımda RX-TX, TX-RX şeklinde hiçbir sorun yok ama araya MAX487 koyduğumda haberleşme yapamıyorum nerede sorun olabilir acaba.
Bu arada ISIS te virtual terminalden baktığımda SLAVE in TX inde çıkan bilgi ile MASTER in RX indeki bilgi aynı görünüyor ama gel gelelim işlem yapmıyor.
Zaten ISIS te bilgi PRE111 olarak gorunmesı gerekırken tuhaf bir şekilde PREo olarak görünüyor. ASCII HEX sorunu var gibi ama aynı kodlarda RS232 de sorun yok. RS485 için data gönderiminde bir fark olmasımı gerekiyor.
Yada ben bu sorunu sadece ISIS te denediğim içimi alıyorum. Gerçek devrede çalışır mı?

MASTER KODLARI

Device = 16F628A

Config  INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BODEN_OFF, LVP_OFF, CP_ON, MCLRE_OFF, DATA_CP_ON  ' configuramos fusibles microcontrolador 

Xtal = 4
Declare Hserial_Baud = 9600  
Declare Hserial_RCSTA = $90  
Declare Hserial_TXSTA = $24
Declare Hserial_SPBRG = 25
Declare Hserial_Clear = On 


All_Digital = On 
TRISA = %11100000
TRISB = %11000010


Symbol slaveLED1 = PORTA.0
Symbol slaveLED2 = PORTA.1
Symbol tx_en = PORTA.2

Dim gelen As Byte
Dim ID As Byte



PORTB=0
PORTA=0
tx_en=0 



conn:
HSerIn 5,conn,[Wait("PRE"),ID,gelen]

If ID=111 Then
 slaveLED1=1
 ElseIf ID=222 Then
 slaveLED2=1
 EndIf
GoTo conn


SLAVE KODLARI
Device = 16F628A

Config  INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, BODEN_OFF, LVP_OFF, CP_ON, MCLRE_OFF, DATA_CP_ON  ' configuramos fusibles microcontrolador 

Xtal = 4
Declare Hserial_Baud = 9600  
Declare Hserial_RCSTA = $90  
Declare Hserial_TXSTA = $24
Declare Hserial_SPBRG = 25
Declare Hserial_Clear = On 


All_Digital = On 
TRISA = %11100010
TRISB = %11000010

Symbol tx_en = PORTA.2


Dim veri As Byte 
veri=1

PORTB=0
PORTA=0



tx_en=1
HSerOut["PRE",111,veri,13]
tx_en=0

dyonizos

Sorun çözüldü arkadaşlar.
Data göndermeden önce max487 pini high yaptıktan sonra ve low yapmadan önce kısa bir gecikme vermem gerekiyormuş. DelayUS 100 gibi br gecikme verince sorun kalmadı.
Ancak nette neredeyse hiçbir örnekte böyle bir gecikme görmedim neden benim yaptığımda gerekti anlamadım.

ahmet_zxc

normalde gerekmemesi lazım. hatta auto direction özellikli 485 entegreleri de var.

anlam veremedim..

Maxim

485 kullanma sebebiniz mesafelerin uzaklığımı?

F493

Selam,

  Bu sorun için gecikme koymanıza gerek yok (Baudrate degiştirdiğinizde yine sorun çıkabilir). Datanın sonuna 1 byte dummy yani anlamsız bir byte koyun. Bu sayede son veri bu sorunu çözecektir. Hatta kaybolacak ama sizin veriniz hedefe ulaşacak. RS485 hatlarında bu sorun oluyor malesef.

Esen kalın.

dyonizos

485 kullanma sebebim bir master ve sayisi kesin olmamakla beraber 3 veya daha fazla slave.
Mesafe en fazla 1-3m olur.
Ancak haberlesmede sadece master slave lere tx yapmiycak.
Ornek.
Daha onceki basligimda interrupt konusunda bahsetmistim.
Slave pic ler kendi sensor ve interruptlari ile palsleri sayacak. Master mesela 200ms arayla slave lerden saydiklari pals degerlerini talep edecek ve slave pic ler master a veri gonderecek. Master da bu verileri isleyecek. Yani hem master hemde slave picler hem rx hemde tx yapacak.
Rs232 ile birden fazla pic ayni hatta baglayamiyorum slave lerin sadece birisi haberlesiyor. Farkli fikirlerede acigim bu konuda.

ahmet_zxc

Alıntı yapılan: dyonizos - 27 Nisan 2016, 18:18:34
Farkli fikirlerede acigim bu konuda.
i2c kullan

buffer entegresi kullan 300 metreye kadar yolu var. p82b96

dyonizos

Ilginc bir entegreymis daha once gormemistim. Texas dan sample istedim herhalde 3-5 gune gelir.
Bu entegrede tek sorun sanirim 12v besleme istemesi. Max485 ile sadece 5v ile tum sistemi calistirma sansim var ama proteusta testlerim pek ic acici degil. Slave picler mastera cevap verdiklerinde masterda veriyi okuyamiyorum. Yada slave ler cevap vermiyor bilemedim.

skara1214

i2c falan kullanacağına canbus kullan olsun bitsin
Herkes ölür ama herkes gerçekten yaşamaz

M_B

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

ahmet_zxc

picleri yan yana 5-10cm kabloyla haberleştiriyorsan entegreylede haberleşir.

similasyonda sıkıntı olabilir, yada senin yazılımda..

beslemedeki dirençleri değiştirerek 5v besleme yapabilirsin ama mutlaka direnç kullan.

dyonizos

USART ve DAHILI kesme ayni anda geldiginde pic nasil bir islem yapiyor bilen var mi?
Bir oncelik olayi varsa onceligi olani yapip sonra otekine devam ediyor mu? Yoksa oncelik verileni yapip digerini atliyor mu?
Benim projemde ornek olarak slave pic 20sn boyunca pulse sayarken master dan talep gelirse saymayi birakirmi. Yada master talep gonderdigi ve onu isledigi sirada harici kesmeden pulse gelmeye baslarsa usart islemini yarim mi birakir?

skara1214

Alıntı yapılan: dyonizos - 29 Nisan 2016, 00:29:02
USART ve DAHILI kesme ayni anda geldiginde pic nasil bir islem yapiyor bilen var mi?
Bir oncelik olayi varsa onceligi olani yapip sonra otekine devam ediyor mu? Yoksa oncelik verileni yapip digerini atliyor mu?
Benim projemde ornek olarak slave pic 20sn boyunca pulse sayarken master dan talep gelirse saymayi birakirmi. Yada master talep gonderdigi ve onu isledigi sirada harici kesmeden pulse gelmeye baslarsa usart islemini yarim mi birakir?
ilkönce öncelikli olanı bitirir daha sonra diğerine girer. atlama olmaz
Herkes ölür ama herkes gerçekten yaşamaz