seriport devrem rx ile rx tx ile tx haberlesiyor Allah Aşkına açıklasın biri

Başlatan sayangku, 04 Nisan 2014, 20:17:36

sayangku

sa arkadaslar ben seriport devresi yaptım led açıp kapatma devresi iyi güzel çalıştı ama manıtıksız çalıstı normalde rx ile tx  ,tx ile rx çapraz
baglantı yapılır benimkinde çalismiyor oyle   rx rx tx tx şeklinde calisiyor lutfen biri bana mantigini anlatsin Allah rizasi için kafayi yedim:D

max232 kullanmadim onun yerine
http://store.extremeelectronics.co.in/USB-to-UART-Bridge-CP2102-Based.html çevirici kullandım 
bunda tx tx ve rx rx seklinde calisti  baska  kullandim http://www.noktaelektronik.net/tr/urun/274/10/16/USB---RS232-Donusturucu---FTDi
buna benzer aldım ama bunda hiç calismadi ceviricin tx 3 bacaginda voltaj var 2 de yok
modullerin calistigina eminim kisa devre edip test ettiim aralarinda tx rx alisverisi yapiyor ornegin tx a gonderiyorum rx a geliyor
kodlari paylasim bide siz bakın koddan olcagini sanmiyorum ama yine paylasim

//  Seriport uygulaması


#include "C:\Users\STARS Elektronik\Desktop\pic16f877A\denek2\main.h"
#use fast_io(b)
      int veri;

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

   // TODO: USER CODE!!
       set_tris_b(0x00);   
       output_b(0x00);   
       
   
      while(true)  //while(1)yapılabilir...
      {
      veri=getch();
      //if (getchar() == 'b') denendi çalısıyor  ama algılama biraz geç
    //  {
      if (veri=='b')
      {
      output_high(pin_B0);
      }
     // }
     
      veri=getch();
      if(veri=='a')
      {
      output_high(pin_B1);
     
      }
     
       veri=getch();
      if(veri=='s')
      {
      output_low(pin_B1);
      output_low(pin_B0);
      }
      }
}


lütfen yardim edin

elektronart

kendinizi bu kadar yıpratmayın. Bu ticari ürünlerin isimlendirmesinden kaynaklanıyor. Bazıları TX i buraya bağla diye kendi RXlerine TX yazarlar. Düşünün ki siz hobi amaçlı uğraşıyorsunuz ve çapraz bağlanması gerektiğini bile bilmiyorsunuz. Elinizde iki kart olsa TXi TXe mi bağlarsınız RXe mi bağlarsınız. Eğer çalışıyorsa onu öyle kabul edin ve kullanın. Sonuçta kullandığınız modulun bir standardı yok, pin dizilişleri bir standarda uygun değil. Ha derseniz ki DB9 konnektörlü bir RS232 dönüştürücü ile denedim 2yi 2ye 3ü 3e bağlayınca çalıştı işte o zaman ortada bir sorun var diyebiliriz. (ki alıcı tarafı öyle tasarlandı ise bazen bu bile mümküm )
Yani özetle çalışıyorsa elleme.
Açık Elektronik

Salih

Rx Tx uçları tamamen donanımsal özellik. Yazılımla ilgisi yok.
Gerçi Programda RS232 ayarları görülmüyor. RS232 yi yazılımsal yapıyorsan, orada bir karışıklık olabilir.
Rx Tx ile ilgili değil ama programı şöyle yaparsan daha iyi olur.
while(true)  //while(1)yapılabilir... 
      {
      veri=getch(); // getc yi bir defa yazsan yeterli olur.
    
      if (veri=='b')  output_high(pin_B0);
     
      if(veri=='a') output_high(pin_B1);
     
      if(veri=='s')
      {
      output_low(pin_B1);
      output_low(pin_B0);
      }
      }

sayangku

Alıntı yapılan: salih - 04 Nisan 2014, 21:24:22
Rx Tx uçları tamamen donanımsal özellik. Yazılımla ilgisi yok.
Gerçi Programda RS232 ayarları görülmüyor. RS232 yi yazılımsal yapıyorsan, orada bir karışıklık olabilir.
Rx Tx ile ilgili değil ama programı şöyle yaparsan daha iyi olur.
while(true)  //while(1)yapılabilir... 
      {
      veri=getch(); // getc yi bir defa yazsan yeterli olur.
    
      if (veri=='b')  output_high(pin_B0);
     
      if(veri=='a') output_high(pin_B1);
     
      if(veri=='s')
      {
      output_low(pin_B1);
      output_low(pin_B0);
      }
      }



hocam ayarları dogru diye tahmin ediyorum
#include <16F877a.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz)
#FUSES PUT                      //Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES WRT_50%                  //Lower half of Program Memory is Write Protected

#use delay(clock=20000000)
#use rs232(baud=2400,xmit=pin_c6,rcv=pin_c7,parity=N,stop=1)


sayangku

Alıntı yapılan: elektronart - 04 Nisan 2014, 21:23:14
kendinizi bu kadar yıpratmayın. Bu ticari ürünlerin isimlendirmesinden kaynaklanıyor. Bazıları TX i buraya bağla diye kendi RXlerine TX yazarlar. Düşünün ki siz hobi amaçlı uğraşıyorsunuz ve çapraz bağlanması gerektiğini bile bilmiyorsunuz. Elinizde iki kart olsa TXi TXe mi bağlarsınız RXe mi bağlarsınız. Eğer çalışıyorsa onu öyle kabul edin ve kullanın. Sonuçta kullandığınız modulun bir standardı yok, pin dizilişleri bir standarda uygun değil. Ha derseniz ki DB9 konnektörlü bir RS232 dönüştürücü ile denedim 2yi 2ye 3ü 3e bağlayınca çalıştı işte o zaman ortada bir sorun var diyebiliriz. (ki alıcı tarafı öyle tasarlandı ise bazen bu bile mümküm )
Yani özetle çalışıyorsa elleme.

hocam yorumunuz için çok tesekkur ediyorum dediginiz gibide olabilir
acaba voltaj düsüklugunden de kaynaklanabilirmi  mesala tx 5 volta yakın voltaj varken rx 3 2.5 arasi ölçüm yapıyorum baglayinca
5 volta duserme haricinde max232 orda voltaj dengeleme işide yapabilirmi ona kafam takıldı biraz ?

Salih

Tx ve Rx i doğru bağlıyorsun demek ki.
Aksi durumda kesin çalışmaz zaten.

elektronart

Alıntı yapılan: sayangku - 04 Nisan 2014, 22:26:20
acaba voltaj düsüklugunden de kaynaklanabilirmi  mesala tx 5 volta yakın voltaj varken rx 3 2.5 arasi ölçüm yapıyorum baglayinca

Bu da gayet normal, zira bir tarafta pic kullanıyorsunuz o muhtemelen 5V luk bir işlemcidir. Muhtemelen diğer taraftaki USB - seri dönüştürücünün çıkışları 3.3 V tur. Koruma amacıyla bir de direnç koymuş olsalar o değerlere düşebilir. Yalnız PIC'in 5V çıkışı USB-seri dönüştürücünüze zarar verebilir dikkatli olun.
Açık Elektronik