rs232 isis alakasız karakterler

Başlatan Gökhan BEKEN, 13 Mart 2013, 10:25:05

Gökhan BEKEN

#include <16f628a.h>
#include <stdio.h>
#include <string.h>

#fuses INTRC,NOMCLR,PROTECT,NOWDT
#fuses PUT,NOLVP,NOCPD,NOBROWNOUT
#use delay(clock=4M)
#use rs232(baud=9600, xmit=PIN_b2, rcv=PIN_b1, ERRORS) 

char islem;

void main ( )
{
   output_low(pin_a0); 
   output_low(pin_a1);

   printf("bir harf giriniz");

   islem=getch();
   
   if(islem=='b')
   {
      output_high(pin_a1);  delay_ms(5000);  output_low(pin_a1);
    
   }
 
}



aşağıda görüleceği gibi farklı şeyler yazıyor neden olabilir arkadaşlar?

Özel mesaj okumuyorum, lütfen göndermeyin.

Erol YILMAZ

baud rate farklı yada sinyalin logic olarak ters olabilir.

Gökhan BEKEN

hocam iki taraftada 9600 baud kullandım
logic olarak nasıl ters olabilir hocam nasıl ayarlayabilirim?
Özel mesaj okumuyorum, lütfen göndermeyin.

ete

Max232 kullandığın için polarity yi normal değil invert yani ters çevrilmiş seçmen gerekir.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

picpicpic

ben isisteki virtual terminali kullanmak için çok çabaladım ama beceremedim alakasız alakasız şeyler çıkıyor, en mantıklısı sanal com port ile compim kullanmak, herhangi bir terminal programı kullanılabilir compim ile

Erol YILMAZ

@meftun   advanced properties de normal yazıyor  onu invert yapar mısın ?

Gökhan BEKEN

#6
arkadaşlar teşekkürler sayenizde öğrendik çalıştı.

mesaj birleştirme:: 13 Mart 2013, 11:49:26

arkadaşlar devreyi gerçekte denedim laptop kullandığımdan usb-rs232 çevirici ile bağlantı yapıyorum. tera term diye bir program buldum onla sanal port oluşturup deniyorum iletişim kuruyorum b harfine basınca ledi yakıyor ama "bir harf giriniz" gibi gönderdiğim yazıları ekranda göstermiyor. Aynı zamanda cevap olarak klavyeden girdiğim harfleride göstermiyor. Ama ledi yakıyor.
Sizden bana bir sanal port yazılımı önermenizi istiyorum.  İlginiz için teşekkürler.
Özel mesaj okumuyorum, lütfen göndermeyin.

skara1214

Herkes ölür ama herkes gerçekten yaşamaz

mdargut


semih

Alıntı yapılan: meftun - 13 Mart 2013, 11:33:58
arkadaşlar teşekkürler sayenizde öğrendik çalıştı.

mesaj birleştirme:: 13 Mart 2013, 11:49:26

arkadaşlar devreyi gerçekte denedim laptop kullandığımdan usb-rs232 çevirici ile bağlantı yapıyorum. tera term diye bir program buldum onla sanal port oluşturup deniyorum iletişim kuruyorum b harfine basınca ledi yakıyor ama "bir harf giriniz" gibi gönderdiğim yazıları ekranda göstermiyor. Aynı zamanda cevap olarak klavyeden girdiğim harfleride göstermiyor. Ama ledi yakıyor.
Sizden bana bir sanal port yazılımı önermenizi istiyorum.  İlginiz için teşekkürler.

Com0com programını öneririm. Ben kullanıyorum. Hiç sorun çıkartmıyor. Ayrıca senin dediğin sorun yazılım ya da bağlantı kaynaklı olabilir.

Gökhan BEKEN

Şimdi Eltima seri port monutor programını da denedim
onda da gelen verileri göstermiyor demekki sorun başka birşeyde ama çözemedim.
Özel mesaj okumuyorum, lütfen göndermeyin.

semih

Programı başka bir yerden aldığın için mantık hatasını görmemişsin.
#include <16f628a.h>
#include <stdio.h>
#include <string.h>

#fuses INTRC,NOMCLR,PROTECT,NOWDT
#fuses PUT,NOLVP,NOCPD,NOBROWNOUT
#use delay(clock=4M)
#use rs232(baud=9600, xmit=PIN_b2, rcv=PIN_b1, stop=1) 

#int_rda 
void serihaberlesme_kesmesi ()
{
   switch(getch())
   {
      case 'b' : output_high(pin_a0);  delay_ms(1000);  output_low(pin_a0); printf("Bildiniz! \r"); break;
      default  : output_high(pin_b0);  delay_ms(1000);  output_low(pin_b0); printf("Bilemediniz! \r"); break;
   }
}


void main ( )
{
   enable_interrupts(int_rda);
   enable_interrupts(GLOBAL);
  
   while(true)
   {      
      printf("Bir harf giriniz \r");
      delay_ms(2000);
   }  
}


BU şekilde düzelttim. Fakat while döngüsü içerisindeki printf deyimi 2 saniyede bir tetiklenecektir. Buraya gecikme vermezsen işlemcin seri porttan gelen karakteri görmez. Kolay gelsin.

Gökhan BEKEN

#12
printf komutu ile göndediğim verileri neden okuyamam, sizce usb-rs232 çeviricide sorun olabilir mi? pcb de bağlantılar doğru

mesaj birleştirme:: 13 Mart 2013, 17:05:53

bu arada 16f628a yı 3.3 voltla çalıştırıyorum. max3232 ile birlikte kullanıyorum.
Özel mesaj okumuyorum, lütfen göndermeyin.

MrDarK

printf komutu okuma değil yazma komutudur.

getch gibi komutlar okuma komutudur. Bence biraz seri port haberleşme örnekleri okuyarak program yazın. Ayrıca denildiği gibi hazır kod kullanıp sağını solunu editlemek yerine biraz örnek kod inceleyip kendi yazılımınızı sıfırdan yazın.

Hem kendiniz öğrenmiş olursunuz hemde kafanız karışmaz.
Picproje Eğitim Gönüllüleri ~ MrDarK

haydarpasamikro

#14
4mhz crystal Ile baud hizi dusurun. Mesela 2400 yarin. 9600 kotaramayabilir. Yada 20mhz kristal. Mullah.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi