Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

haberleşme sorun

Başlatan barut, 19 Aralık 2013, 22:23:33

barut

alıcı
#include <16f877.h> 
#use delay(CLOCK=4000000)
#use fast_io(b)
#fuses XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT
#use rs232 (baud=9600, xmit=PIN_C6, RCV=PIN_C7, parity=N, stop=1)
char temp=0;


#INT_RDA
void seri_kesme()
{ 
disable_interrupts(INT_RDA);
temp=getc();
}

void main()
{
set_tris_b(0x00);
output_b(0x00);
output_a(0x00);
enable_interrupts(GLOBAL);
while(true)
{
enable_interrupts(int_rda);
if(temp=='S')
{ 
temp=0X00;
output_bit(PIN_B0,1);
output_bit(PIN_B1,1);
output_bit(PIN_B2,1);
output_bit(PIN_B3,1);
}

if(temp=='A')
{ 
temp=0X00;
output_bit(PIN_B0,0); 
output_bit(PIN_B1,0);
output_bit(PIN_B2,0);
output_bit(PIN_B3,0);
}

}
}

verici
#include <16f877.h> 
#use delay(CLOCK=4000000)
#use fast_io(b)
#use fast_io(a)
#fuses XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT
#use rs232 (baud=9600, xmit=PIN_C6, RCV=PIN_C7, parity=N, stop=1)

void main()
{
set_tris_a(0x03);
set_tris_b(0x00);
output_b(0);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0xFF);
putc(0xFF);
putc(0xFF);
putc(0xFF);
putc(0xFF);

while(true)
{
if(input(pin_a0))
{
putc('S');
output_high(pin_b0);
}
if(input(pin_a1))
{
putc('A');
output_high(pin_b1);
}

}


}



udea nın rf modulunu kullanıyorum.Devre pratikte çalımıyor önerisi olan var mı acaba?

jrcapa

Uyandırma kodlarını putc('S') ve putc('A) komutlarından hemen önce göndermelisin ki data gönderildiği anda alıcı uyanık vaziyette olsun.

esensoy

Mesela;
#include <16f877.h> 
#use delay(CLOCK=4000000)
#use fast_io(b)
#use fast_io(a)
#fuses XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT
#use rs232 (baud=9600, xmit=PIN_C6, RCV=PIN_C7, parity=N, stop=1)

void gonder(int veri);

void main()
{
set_tris_a(0x03);
set_tris_b(0x00);
output_b(0);

while(true)
{
if(input(pin_a0))
{
gonder('S');
output_high(pin_b0);
}
if(input(pin_a1))
{
gonder('A');
output_high(pin_b1);
}
}
}

void gonder(int veri){
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0xFF);
putc(0xFF);
putc(0xFF);
putc(0xFF);
putc(0xFF);

putc(veri);
}
En tehlikeli an "zafer" anıdır.

barut

void gonder(int veri)

int veri mi yazmalıyım char veri mi

esensoy

#include <16f877.h> 
#use delay(CLOCK=4000000)
#use fast_io(b)
#fuses XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT
#use rs232 (baud=9600, xmit=PIN_C6, RCV=PIN_C7, parity=N, stop=1)
char temp=0;

#INT_RDA
void seri_kesme(){ 
disable_interrupts(INT_RDA);
temp=getc();
}

void main()
{
set_tris_b(0x00);
output_b(0x00);
output_a(0x00);
enable_interrupts(GLOBAL);
enable_interrupts(int_rda);
while(true)
{

if(temp=='S')
{ 
temp=0X00;
output_bit(PIN_B0,1);
output_bit(PIN_B1,1);
output_bit(PIN_B2,1);
output_bit(PIN_B3,1);
enable_interrupts(int_rda);
}

if(temp=='A')
{ 
temp=0X00;
output_bit(PIN_B0,0); 
output_bit(PIN_B1,0);
output_bit(PIN_B2,0);
output_bit(PIN_B3,0);
enable_interrupts(int_rda);
}
}
}

bu kodun çalışması lazım, çalışmaz ise dosyalarını yükle, kendi pc mde bakayım
En tehlikeli an "zafer" anıdır.

esensoy

1 virtual terminal baud rate ini 9600 e ayarlamışsın, 1200 e çevirdim,
2 isiste piclerin hızlarını 1MHz olarak bırakmışsın, 4MHz yaptım,
3 use rs232 satırına bits=8 yazmamışsın, bu sebepten sanırım ilk gönderilen 0x55 karşıya 0x25 olarak gidiyordu, bits=8 yazınca düzeldi,
4 0x55 ten sonra 00 ve FF neden gönderiyorsun? 434 benzeri rf alıcı vericiler için gerek yok diye biliyorum,

genel değişiklikler yaptım, simulasyon çalışıyor,

http://s3.dosya.tc/server15/lNcmTE/f8771200.rar.html
En tehlikeli an "zafer" anıdır.

barut

Devre gerçekte çalışmıyor.alıcı taraftaki ledler sürekli yanıp sonuyor.

engineer42

iki gün önce benzer sorun yaşadım.. microdenetleyicinin dahili osilatörünü kullanarak dene.. kristalde sorun olabilir

tigris

haberleşme hızın 9600 bu rf için çok yüksek olabilir buna benzer bir projeyi piyasadaki çin malı rf modüller ile yapmıştım ve hızı 1200 olarak ayarlamıştım.
diğer arkadaşların dediği gibi uyandırma ve senkonazisyon verilerini  her veriyi göndermeden önce göndermelisin ki alıcı kendini hazırlasın.