Elektronik ve Teknoloji Merkezi Elektrotekno.com
Elektronik ve Teknoloji Merkezi




Click here to go to the original topic

Elektrotekno.com Ana Sayfa Microchip Pic Serisi
Yazar Mesaj
esmerim33
Tarih: 07.05.2007, 14:00 Mesaj konusu: Pc ile Pic arasında seri iletişim problemi

Microcode studio plus kullanıyorum aşağıdaki kodları yazdım
Kod:
porta=0  :  portb=0  :  portc=1  :  portd=0
trisa=0  :  trisb=0  :  trisc=0  :  trisd=0
porte=0  : trise=0
adcon1=7
INCLUDE "modedefs.bas"
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 2400
DEFINE HSER_SPBRG 25
deger var byte
main:
hserout ["Cadcom"]
pause 1000
goto main
end

gördüğünüz gibi picden 1 sn aralıkla pc'ye "cadcom" gönderiyorum
Kod:  
/²Â"
68 $
ñÙá‘
›œ’
"
$
ñÙá‘
›œ’
"
$
ñÙá‘
›œ’
"
$
ñÙá‘
›œ’
"
$
ñÙá‘
›œ’
"
$
ñÙá‘


ama pc'de yukarıda saçma sapan karakterleri alıyorum sizce problem nerde ?

Pc'nin rx bacağını picde bulunan tx yani portc.6 bacağına bağlıyorum kullandığım işlemci Pic16F877 pic ile pc arasında ise 1k lık direnç var ayrıca baud rateler ayarlıdır sadece terslenip terslenmeme olayına kafam takıldı dikkat ederseniz aslında "cadcom" değerini gönderiyor fakat neden düzgün değil ? yardımlarınızı bekliyorum saygılar
ete
Tarih: 07.05.2007, 14:22 Mesaj konusu:

Pic çıkışları TTL seviyesindedir. Yani High=+5V Low=0V dur.
PC RS232 çıkışı ise farklıdır. RS232_HIGH=-10V ve RS232_LOW=+10V dolayındadır. Bu voltajlar ana karta bağlı olarak 7 voltlara kadar düşebiliyor.
Şimdi olaya şöyle bir bakalım. Pic den HIGH gönderdiğin zaman TX ucuna +5V vermiş oluyorsun. PC nin bunu HIGH olarak algılayabilmesi için buradaki voltajın -10V dolayında olması gerekiyor.

AYnı şekilde PC den HIGH sinyali gönderdiğin zaman RS232_TX hattına -10V luk bir voltaj verilir. Pic in bunu High olarak algılayabilmesi için gelen voltajın +5V seviyesinde olması gerekir.

İşte uyumsuzluk buradadır ve bu uyumsuzluğu gidermek için arada RS232 - TTL çeviricisi kullanılır (MAX232 yada CP232).
Bu çevirici içinde bir voltaj katlama devresi bulunur ve 0-5V besleme ile RS232 için gerekli olan voltaj seviyelerini üretir.
Kısaca bu çevirici PC den High gönderildiği zaman gönderilen -10V u alır bunu +5V ta çevirir ve TTL tarafından çıkartır.
PC den Low gönderildiği zaman gönderilen +10V tu alır ve bunu GND ye çevirip TTL tarafından çıkartır.
AYnı şekilde işin tersi olarak;
Pic den High gönderildiği zaman gönderilen +5V tu alır ve onu -10V ta çevirip RS232 tarafından çıkartır.
Pic den Low gönderildiği zaman bu GND sinyalini alır ve onu +10V ta çevirip RS232 tarafından çıkartır. Böylece PC ile TTL cihazlar (pic gibi) uyum içerisinde çalışırlar.

BU şekilde bir çevirici kullanırsan sorunun kalmayacaktır.

Ete
esmerim33
Tarih: 07.05.2007, 16:39 Mesaj konusu:

Sayın ete hocam;

Pc ile pic arasına max232 koymam gerektiğini biliyorum ama ne yazıktırki bulunduğum yerde bu entegreyi bulamıyorum kitapta ve internette gördüğüm kadarıyla pc'den çıkan çıkan tx bacağına 22k ve picden çıkan tx bacağına da 1k koymuşlar benimde elimde ancak bu imkan olduğunu için bu yolu denedim bu şelilde bi hata aldım demekki sağlıklı iletişim için max232 şart yardımlarınız için sağolun en kısa zamanda max232 temin etmeye çalışacağım .....Teşekkürler
ete
Tarih: 07.05.2007, 20:45 Mesaj konusu:

PC den pic'e bilgi gönderip pic de değerlendirme yapsa idin gelen sinyali değilleyerek bir de direnç ile düşürerek belki bir sonuç almak mümkün olabilirdi. Ancak picden PC ye sinyal seviyesinin birde yükseltilmesi gerekiyor. Bu nedenle 232 çeviricisi olmadan sağlıklı çalışacağını sanmıyorum.

Ete
patan_mustafa
Tarih: 07.05.2007, 21:48 Mesaj konusu:

Hserout komutu ile seviye çevirici entegre kullanmadan pcye veri aktarımı imkamsız gibi bir şey.
Hserout yerine

SEROUT PORTB.0, N2400,["Merhaba",13,10]

komutu ile 1Kohmluk bir direnç ile pcye veri gönderebilirsiniz. software olarak
Elektrotekno.com Ana Sayfa Microchip Pic Serisi
1. sayfa (Toplam 1 sayfa)

Pc ile Pic arasında seri iletişim problemi

Gizlilik Politikası

PLC programming