Keymark rf alıcı verici sorunu

Başlatan gamer_1989, 08 Aralık 2011, 00:57:44

gamer_1989

merhaba arkadaşlar,

Bitirme projem için bilgisayar kontrollü araba konusunu aldım, elimde keymark rf alıcı-vericisi var.Fakat rf iletişimde sorunum var.Şöyleki, rs232 ile max232 bağlantısını yapıp pic 16f877 ye bağladığım zaman veri alışverişinde hiçbir sorun olmuyor.Ama ne zaman ki pic'e alıcıyı max232 ye vericiyi bağlasam bir türlü aynı sonucu alamıyorum hatta hiçbir belirti olmuyor iletişime dair.Rf konusundaki ilk tecrübem olmasından dolayı bir yerlerde hata yapıyor olmalıyım.baudrate olarak 9600 kullandım,anten boyu olarak 17 cm kullandım.Kullandığım pic kodu ise;

#include <16F877.h>

#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use delay(clock=4000000)
#use rs232 (baud=9600,  xmit=pin_C6, rcv=pin_C7, parity=N, bits=8)

void main()
{
int al;
set_tris_a(0x00);

while(TRUE){
   
al=getch();

if(al=='A')
{
   output_high(PIN_A0);
   delay_ms(500);
}
else if(al=='S')
{
output_low(PIN_A0);
delay_ms(500);
}
}

amacım A harfi geldiğinde A0'daki ledi yakmak,S harfi gelince söndürmek.Program modül kullanmadan direk bağlayınca çalışıyor.Birkaç yerde int_RDA gördüm ama kullanmam şart mı bilmiyorum ,bilgiyi ise bir terminal programıyla gönderiyorum rs232'ye.Bu konuda yardımcı olabilir misiniz?


Kabil ATICI

Alıcı verici özelliklerini bilmiyorum ama, band genişlikleri düşükse kullanılan iletişim hızını yetişemeyebilir.
Daha düşük iletişim hızını deneyebilirsin. (baud 4800 ve 2400  için hatta daha düşük)

alıcı vericini doğrudan elle test edebilirsin. Vericinin tetikleme ucuna bir anahtarla seviyesini değiştirisen, alıcının çıkış ucunda bir değişim olup olmadığını voltmetre ile görebilirsin. (Daha iyisi bir osilaskopla)  Önce bunu yapman daha iyi olabilir. İletişim tamamsa diğer adıma geçebilirsin.
ambar7

gamer_1989

Ewt baudrate'i 600'e çektim bu sefer oldu,bir de alıcı tarafına sinyal karışmasını önlemek için şifre koydum 'X' diye,çalıştı fakat bu sefer de c#'ta butona iki kez basınca anca değişiyor,yazdığım kod aşağıda  acaba bu kodda  intterrupt mı kullanmalıyım?Interruptlar hakkında pek bilgim yok fakat 2-3 yerde gördüm.


#include <16f628A.h>
#fuses INTRC_IO, NOMCLR, NOPROTECT, NOWDT, NOLVP
#use delay(clock=4000000)
#use rs232(baud=600, xmit=PIN_B2, rcv=PIN_B1)

void main(){
int a;


while(1){
if(getch()=='X')
{
a=getch();
}
if(a=='A'){
output_high(pin_a1);
output_low(pin_a0);
}
if(a=='S'){
output_high(pin_a0);
output_low(pin_a1);
}
}
}