avatar_mustafa

SERİ HABERLEŞMEDE RS485 - RS 232 KULLANIMI

Başlatan mustafa, 02 Şubat 2012, 16:13:54

subram

hocam merhabalar bende bir süredir. 485 ile çalışıyorum fakat aşamadığım bir sorun var.
Hserout komutu ile veri gönderirken alıcı moda geçmeden kısa bir süre bekleme yapmak gerekiyor. ben PAUSE komutu kullanmadan bu  işi bir türlü halledemedim.
TX kesmesini araştırdım ama bir türlü istediğimi yapamadım.


HIGH RTS
HSEROUT[VERI]
PAUSE XX
LOW RTS


Bu şekilde çalışıyor sorun yok. ama kritik işlerse pause kullanmak pek iyi olmuyor.  verinin gittiğini nasıl anlarız ki tekrar alıcı moda geçelim.

ete

Yalnızca bu komutları verince pek bir şey anlaşılmıyor.
Hserout komutunu kullandığına göre USART kullanmayı amaçlıyorsun. Bunun için öncelikle USART portunun aktif (enable ) edilmesi gerekir. Programın başında kullanacağın define komutları bu işi otomatik yapar istersen kendinde RCSTA.7=1 vererek aktif edebilirsin.
Daha sonra yollanacak bilgiyi diren TXREG registerine yazabileceğin gibi (TXREG=VERI) HSEROUT komutu ilede bu işi yapabilirsin.
TXSTA registeri 5. bitini enable yapar yapmaz Veri bilgisi çıkışa yönlendirilir ve sende bu arada TXSTA.1 bitine bakarsın. Bu bit Transmit shift registerin boş yada dolu olduğunu gösterir. Bilgi yollanmış ise değeri HIGH (1) olacak yollanmamış henüz dolu ise değeri LOW(0) okunacaktır. Bu bit High oluncaya kadar bekler ve sonuçta  LOW RTS dersin.

Normalda bu kadar komplike bir çalışmaya gerek duyulmaz ama sen ya çok sıklıkla veri yollama işini yaptırıyorsun yada başka bir sorunun var. Orada yer alan gecikme komutunu döngü biçiminde LOW RTS komutundan sonra koy istersen bakalım ne değişecek.

Ete



OtacoN

Merhabalar (çiçeği burnunda bir üye olarak)

Benzer bir konuda yardıma ihtiyacım var.

Ben proteus'ta 3 tane slave 16f877'yi(sayısı 3ten fazla olacak normalde) bir tane master 18f4550'ye anlatıldığı şekilde bağladım,yazılımını da atıp simülasyon'a başladım, master en başta slave birimlerden adres talebi bekliyor ve adres talebi gelince BUS 'a adres bilgisini basıyor ve ilgili slave bu adresi alıp hafızasına atıyor. Buraya kadar herşey tamam ve çalışıyor. Kullandığım entegre de max487 unutmadan söyleyeyim. Data sheetteki 120 ohm degerinde hat dirençlerini de bağladım.

1.pic adres talep ediyor ve alıyor. tekrar talep ederse yine alıyor problem yok.(Adres alma işlemini pic'e reset attırarak yapıyorum,her resette yeni adres talep ediyor ve alıyor)

2.pic adres talep ediyor ve alıyor.

3.pic adres talep ettiği anda master duruyor ne adres veriyor ,ne bişey yapıyor.

Osiloskop ile baktığımda 1. 2. sinyaller darbe şeklinde aynı genlikte sinyaller.(....|''|..|'|... gibi)
Fakat 3. pic'in sinyali( |''''''''''''''''' ) şeklinde ve güderek düşüyor.

Not: Tüm pic kombinasyonlarını denedim,3.pic dediğim 3.adreslenen pic.

Bir süre sonra aklıma daha fazla pic eklemek geldi.
Devreye 7 pic daha ekledim ilk 6pic güzel güzel çalışıyor fakat 7.yani son adresledigim pic master'a iletim yapmıyor, normalde A yolunda 1.72V ,B 'de -0.06V varken bu son pic aktif edildiğinde yani hata bağlandığında A 2.70V B 2.30V oluyor.

Benzer bir problem ile karşılaştınız mı acaba.

Teşekkürler

skara1214

120 ohmu ilk ile sona takacaksın ve bahsettiğimiz gibi sadece en sondaki pice 680 ohm bias dirençleri ekle birde öyle dene(hızda önemli tabi yavaştan başla 9600 gibi)

OtacoN

Bias direncini hemen deneyeceğim bilgisayarımda, 120 ohm'luk dirençleri master'a bağlı olan max487'nin B ve A ile hattın en sonundaki Max487'nin A ve B  uçlarına paralel bağladım. Hız olarak 4800,2400 ve son olarak 1200'e indim .

Bias'ı hemen deneyip sonucu paylaşacağım,teşekkür ederim :)

OtacoN

Malesef olmadı,680 ve 4k7 ohm değerleri de problemi çözmedi. 11pic'e çıkardım fakat 11.pic'i aktif ettiğimde yine aynısı oluyor.Pratikte uzun bir delikli pertinaks üzerine pic'leri tek tek takarak denemeyi planlıyorum yarın.

Tekrar Teşekkürler.

gogoce

farklı bir soru olacak ama birşey dikkatimi çekti . Genellikle bu tip haberleşme sistemlerinde haberleşmenin OK. olduğunu gösteren bir led bulunuyor ya belirli aralıklarla periyodik olarak yanıp sönüyor yada sürekli yanık kalıyor . Bu işlemi nasıl yapıyorlar pic ile kesmeler yardımıyla mı yoksa özel canbus entegreleri veya bu işlevi gerçekleştiren haberleşme entegreleri varmı

saygılar
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

OtacoN

Alıntı yapılan: gogoce - 05 Şubat 2013, 18:06:47
farklı bir soru olacak ama birşey dikkatimi çekti . Genellikle bu tip haberleşme sistemlerinde haberleşmenin OK. olduğunu gösteren bir led bulunuyor ya belirli aralıklarla periyodik olarak yanıp sönüyor yada sürekli yanık kalıyor . Bu işlemi nasıl yapıyorlar pic ile kesmeler yardımıyla mı yoksa özel canbus entegreleri veya bu işlevi gerçekleştiren haberleşme entegreleri varmı

saygılar

Kesme ile yapılıyor,farklı bir yöntemi varsa bilmiyorum şahsen.

ete

Tx ve Rx hatlarına birer led bağlarsan  haberleşme oldukça ledlerden izleyebilirsin. Ledler tabiiki birer transistörle sürülmelidirler.
Ete

umitco

 "3.pic adres talep ettiği anda master duruyor , ne adres veriyor , ne bişey yapıyor."

Usarta bir data geldiğinde eğer bu data okunmaz ise 2.gelen data ile usart kitlenebilir. Eğer adres bilgisi için birden fazla ve seri bir data gönderiyorsanız deneme amaçlı tek tek datalar gönderin ve gelen dataları anında okuyarak sorununun devam edip etmediğini deneyebilirsiniz.

OtacoN

Alıntı yapılan: umitco - 06 Şubat 2013, 03:40:50
"3.pic adres talep ettiği anda master duruyor , ne adres veriyor , ne bişey yapıyor."

Usarta bir data geldiğinde eğer bu data okunmaz ise 2.gelen data ile usart kitlenebilir. Eğer adres bilgisi için birden fazla ve seri bir data gönderiyorsanız deneme amaçlı tek tek datalar gönderin ve gelen dataları anında okuyarak sorununun devam edip etmediğini deneyebilirsiniz.

Sn.Ümitco öncelikle teşekkür ederim.

rs485 donanımı kullanmadığım zaman bir sorun yaşanmıyor,bu nedenle;

İlk olarak max487 entegresi kullanımından vazgeçtim,opto-coupler ile bir iletişim tasarladim,bu kilitlenme konusunda ise mikroc ile denemeler yapmaya başladım,yarınki bütünleme sınavımdan sonra hemen sonuca varmayı planlıyorum, "tx buffer" denilen tamponun boş olduğunu ve data almaya göndermeye hazır hale geldiğini sorgulayan birkaç satır ekleyeceğim.

Ardından devreyi paylaşacağım.İnşallah olacak bu defa.


hibeyup_44

Merhabalar,
Öncelikle herkese merhaba, biraz konuyu hortlatmş oldum amma bi sorum olcaktı,


Şimdi max458  entegresini 3.3v ile calışan bir picte kullanıcam ama bi sorun var max485 entegresinin beslemesini 3.3v ile beslemem yeterlimi yoksa araya bi konverter koymak gereklimidir.

Kolay gelsin.

OtacoN

Kardeş Max entegresinin data~sheet'inde çalışma aralığı kısmında 3.3 V değerine izin veryor mu bir bakıver.

Kolay gelsin.

erdogan2734

max485 entegrelerde hem rx pini hep tx pini bağlamaya gerek varmıdır acaba. sadece tx pini bir max485 girsek oteki max485 den rx pinine girsek veri ileşimi sağlanırmı acaba gene
Erdoğan
İmkansızın zaman aldığı bir dünya'da bana zorluktan bahsetme!

ete

Tek yönlü olarak haberleşebiirsin. Bunu denemedim. Ama sorun çıkmaz diye düşünüyorum.

Ete

Powered by EzPortal