RS232 PC TO PIC 16F628A

Başlatan barisertekin, 23 Ağustos 2011, 22:33:32

LukeSkywalker

Alıntı yapılan: kudretuzuner - 24 Ağustos 2011, 23:41:35
Merhaba
Ben çalışmamı sundum.Prensibi anlattım.Arkadaşın problemini halen de anlamış değilim.Konu açılınca yardımcı olur ve sistem kavranır diye paylaştım.Daha önce de belirtmiştim pıc basici bilmiyorum,pıc'te programlama lisanı önemli değil algoritmayı doğru kurduktan sonra hangi dille yazarsanız yazın proje çalışır.Özetle seri iletişim için yeterli bilgi verdiğimi zannediyorum ama yine de anlaşılmayan bir yer olursa ve de bildiğim birşey ise paylaşırım.
Amatör olduğum için öğrendiklerimi paylaşmak,benim temel prensibimdir.
Merhaba
Hocam yanlış anladınız ben arkadaş sizin devrenizi yaptı zannettimde o şemaya göre yorum yapacaktım..

LukeSkywalker

#16
http://www.mediafire.com/?415g67vvjntn4vc
@Barisertekin
yukarıda verdiğim dosyada PC'den PIC'e tek karakter veri gönderen bir program var. Simülasyonda da çalışıyor. Devreyi buraya da resim olarak ekliyorum. Buna göre kur ve dene bi bakalım. Donanımından kaynaklanan bir sıkıntı var mı?



Şunu da ekleyeyim; Eğer arada dönüştürücü kullanıyorsan (USB/RS232) Max 232 kullanma...

barisertekin

Herkese selamlar,
Uzun uğraşlar sonucunda bu işi çözmüş bulunmaktayım. USART'ı kullandığımda sorunsuz çalıştı.

Hem PC'den PIC'e hemde PIC'ten PC'ye veri gönderip alabiliyorum.

Not: Tüm denediğimiz yazılımlar çalışıyor.

  • HyperTerminal
  • SerialPortTerminal
  • Benim test için yazdığım PORTTEST
  • Maytere'nin test için yazdığı program

Artık ufak tefek inceliklerle uğraşmam gerekiyor. Biraz daha geliştirmeye ihtiyacı var.

Örneğin, klavyeden tuşa basılı tutunca pic kilitleniyor. Resetlemek gerekiyor. Daha araştırmaya fırsatım olmadı.

Uğraşırken konu üzerinde epey tecrübe edindim. Böylece konu da çözülmüştür.

Hepinize en içten sevgilerimi sunarım.

LukeSkywalker

Hocam gözünaydın. Peki nasıl çözdüğpünü neden anlatmadın? Aynı sorunu yaşayan arkadaşlara faydan olur paylaşırdan burada...

barisertekin

#19
Alıntı yapılan: maytere - 26 Ağustos 2011, 00:17:40
Hocam gözünaydın. Peki nasıl çözdüğünü neden anlatmadın? Aynı sorunu yaşayan arkadaşlara faydan olur paylaşırsan burada...
Eğer çözersem, çok yakında konu hakkında çok açık, basit, anlaşılır hatta resim ve videolar ile destekli bir döküman hazırlayacağıma kendime söz vermiştim.
Henüz erken öncesinde biraz daha tecrübe edinmek istiyorum.

Yaptığım hata USART kullanmamak.
Gerisi çok basit şemada kullanılan devreyi kurmakmış aslında.
Yazılımsal olarakta her türlü program çalışıyor.

Kodun son halini aşağıda paylaşıyorum.

barisertekin

'include "modedefs.bas"

@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_on
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16F628A, MCLR_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT

'DEFINE LCD_DREG          PORTB 'LCD data bacakları PortB de bağlı
'DEFINE LCD_DBIT         4  'LCD data bacakları 4. bitten başlıyor
'DEFINE LCD_EREG          PORTB 'LCD Enable Bacağı PortB de bağlı
'DEFINE LCD_EBIT         3 'LCD Enable Bacağı 3. bite bağlı
'DEFINE LCD_RWREG       PORTB 'LCD RW Bacağı PortB de bağlı
'DEFINE LCD_RWBIT        2 'LCD RW Bacağı  2. bite bağlı
'DEFINE LCD_RSREG      PORTB 'LCD RS Bacağı PortB de bağlı
'DEFINE LCD_RSBIT      1 'LCD RS bacağı 1. Bite bağlı
'DEFINE LCD_BITS         4 'LCD 4 bit  olarak bağlı
'DEFINE LCD_LINES      2 'LCD 2 sıra olarak çalışıyor.

'SERİ İLETİŞİM PARAMETRELERİ

DEFINE HSER_BAUD 2400
DEFINE HSER_SPBRG 25
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h

TRISA=%00000000 'A portu çıkış olarak ayarlandı.
TRISB=%11111111 'B portu giriş olarak ayarlandı.

PORTA = 0
PORTB = 0

'Baud    con 16780   '2400,8,N,1 (inverted, driven)

PCDATA   VAR     BYTE 'PC'den gelen veri
RDATA    VAR     BYTE
'PCDATA = 5
'LOW PORTB.2  'RW bacağı ekrana yazmaya imkan vermek  için LOW yapıldı.
'PAUSE 200  ' LCD nin kullanıma hazır hale  gelebilmesi için gerekli süre

'LCDOUT $FE,1  ' Ekran silindi

'-----ANA PROGRAM BAŞLANGICI ------
BASLA:

'SerIn2 PORTB.1,396,[PCDATA]
;Serin PORTA.1, T2400, [PCDATA]
'SERIN2 PORTB.1,T2400,[PCDATA]
HSERIN [PCDATA]
pause 100
'PCDATA = 2

IF PCDATA = 48 THEN
HIGH PORTA.2

RDATA = 5
HSEROUT[DEC RDATA]

ENDIF

IF PCDATA = 49 THEN
HIGH PORTA.1

RDATA = 6
HSEROUT[DEC RDATA]

ENDIF

IF PCDATA = 50 THEN
HIGH PORTA.0

RDATA = 7
HSEROUT[DEC RDATA]

ENDIF

IF PCDATA = 51 THEN
HIGH PORTA.7

RDATA = 8
HSEROUT[DEC RDATA]

ENDIF

'PCDATA = PCDATA + 1

'LCDOUT $FE,1  ' Ekran silindi
'LCDOUT " OKUNAN = ",#PCDATA  'ilk satıra Sayı Desimal olarak yazıldı
'LCDOUT $FE,$C0,"ONDALIK = ",BIN PCDATA 'ikinci sıraya Binary olarak yazıldı.
'PAUSE 100 '100 ms   bekliyoruz.


goto BASLA

END

-----------

LCD Ekranı iptal ettim. Kod içerisinde kalabalık oluyor ama idare edin.

LukeSkywalker

Peki USB/RS232 dönüştürücü kullandın mı? Kullandıysan max232 kullandın mı?

barisertekin

#22
Evet resimde var diye yazmadım.
USB Dönüştürücü ve Max232 Kullandım.

USB Dönüştürücü kullandığımız için Max232 kullanmasakta çalışır diyosan denemek lazım aslında.
Öyle olsa bile hem dönüştürücü ile hem normal RS232 ile çalışan bir sistem istiyorsak Max232 koymalıyız.

LukeSkywalker

Bence çalışması lazım. Bir dene istersen.

barisertekin

Max 232'siz denerken,
TTL seviyesine indirmeden pic'e aktarmış olacağız.
Pic'in yanma olasılığı nedir sizce ?

LukeSkywalker

Dostum o kablo zaten TTL seviyesine dönüştürüyor veriyi. İçerisinde çok yüksek ihtimalle FT232 kullanıyordur.

barisertekin

Tamam o zaman denemeye fırsat bulursam bildiririm.

canbulut

bence deneme kardeşim bırak mytree denesin:D:Dyanma olasılığı yüksek diyorum ben.bu benim düşüncem.çünkü içinde muhakkak bir seviye dönüşütrücü var bu meretin.

barisertekin

 :) Araştırıcam. Bu konuyu iyice irdelemem gerekiyor.

LukeSkywalker

Alıntı yapılan: canbulut - 26 Ağustos 2011, 01:34:23
bence deneme kardeşim bırak mytree denesin:D:Dyanma olasılığı yüksek diyorum ben.bu benim düşüncem.çünkü içinde muhakkak bir seviye dönüşütrücü var bu meretin.
:) Elimde o kablodan olsa hemen denerdim. Bazan birşeyleri riske atmak gerekir . Lakin burada riske atılacak birşey yok bence. O dönüştürücülerin genelinde FT232 kullanılıyor ve USB'den gelen voltaj zaten 5V seviyesindeki, o kabloların içerisine 5V-13V  step-up convertor yapacaklarını hiç zannetmiyorum. En basitinden içi açılıp bakılabilir FT232 var mı yok mu.