CCS ile RF RX ve TX pinlerinin yarattığı Sorun

Başlatan eemuratozan, 18 Mart 2012, 16:24:53

eemuratozan


merhabalar arkadaşlar ben ccs de rf yazmaya uğraşıyordum hatta buraya da konu açıp yardım istedim sonunda başardım ancak şöyle bir gariplik gözüme takıldı yazılımsal rf yaparsam hiç sorunsuz çalışıyor ancak donanımsal pinleri kullanırsam çalışmıyor bunun sebbi nedir ?
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

serhat1990

Donanımsal rf pinlerini aktif ettiğine eminsin değilmi , yani rx'i giriş tx'i çıkış yapıyorsun baud'u uygun bir şekilde ayarlıyorsun .  Kod koyarsan yardımcı olabilirim. Yada tanımlama rutinini ,

skara1214

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

eemuratozan

ilginç ama donanımsal olan pinleri tanımlıyorum olmuyor :) yani rs232(baud=600,xmit=pin_a0,rcv=pin_a1) yspınca oluyor ancak xmit=pin_c6 ve rcv=pin_c7 yapınca ve o iki pini giriş çıkış olarak tanımladıktan sonra bağlayınca çalışmıyor bu arada pic16f877a kullanıyorum

verici kodu:

#include <rfvericison.h>
#use delay(clock=4000000)
#use rs232(baud=600, xmit=pin_a0, rcv=pin_a1, parity=N)
//data gönderimi pin_a0, data alımı pin_a1, 600 baud hız, eşlik biti yok 
#use fast_io(a)
#use fast_io(b)



void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
   set_tris_b(0xFF);
   set_tris_a(0x00);
   
   
   while(TRUE)
   {
   if(input(pin_b0))
   {
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   
  
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   
   putc(0x01);    // verimizi gönderiyoruz
   putc(0x01);    // verimizi gönderiyoruz
   putc(0x01);    // verimizi gönderiyoruz
   putc(0x01);    // verimizi gönderiyoruz
   putc(0x01);    // verimizi gönderiyoruz
   }
   if(input(pin_b1))
   {
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   
  
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   
   putc(0x02);    // verimizi gönderiyoruz
   putc(0x02);    // verimizi gönderiyoruz
   putc(0x02);    // verimizi gönderiyoruz
   putc(0x02);    // verimizi gönderiyoruz
   putc(0x02);    // verimizi gönderiyoruz
   }
   if(input(pin_b2))
   {
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   
  
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   
   putc(0x03);    // verimizi gönderiyoruz
   putc(0x03);    // verimizi gönderiyoruz
   putc(0x03);    // verimizi gönderiyoruz
   putc(0x03);    // verimizi gönderiyoruz
   putc(0x03);    // verimizi gönderiyoruz
   }
   if(input(pin_b3))
   {
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   putc(0xAA);    // uyandırma verisi
   
  
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   putc(0x56);    // vericiye 0x56 adını verdik
   
   putc(0x04);    // verimizi gönderiyoruz
   putc(0x04);    // verimizi gönderiyoruz
   putc(0x04);    // verimizi gönderiyoruz
   putc(0x04);    // verimizi gönderiyoruz
   putc(0x04);    // verimizi gönderiyoruz
   }
   }
}

alıcı kodu:


#include <rfalıcıson.h>
#use delay(clock=4000000)
#use rs232(baud=600, xmit=pin_a0, rcv=pin_a1, parity=N)
#use fast_io(a)
#use fast_io(b)

char a,b;
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
   set_tris_b(0x00);
   set_tris_a(0xFF);
  
   
   output_a(0x00);
   output_b(0x00);
   
   while(TRUE)
   {
   a=getc();
   if(a==0x56)
   {
   b=getc();
   if(b==0x01)
   {
   output_b(0b00000001);
   delay_ms(50);
   output_b(0b00000010);
   delay_ms(50);
   output_b(0b00000100);
   delay_ms(50);
   output_b(0b00001000);
   delay_ms(50);
   output_b(0b00010000);
   delay_ms(50);
   output_b(0b00100000);
   delay_ms(50);
   output_b(0b01000000);
   delay_ms(50);
   output_b(0b10000000);
   delay_ms(50);
   }
   
   if(b==0x02)
   {
   output_b(0b10000000);
   delay_ms(50);
   output_b(0b01000000);
   delay_ms(50);
   output_b(0b00100000);
   delay_ms(50);
   output_b(0b00010000);
   delay_ms(50);
   output_b(0b00001000);
   delay_ms(50);
   output_b(0b00000100);
   delay_ms(50);
   output_b(0b00000010);
   delay_ms(50);
   output_b(0b00000001);
   delay_ms(50);
   }
   
   if(b==0x03)
   {
   output_b(0xFF);
   delay_ms(100);
   output_b(0x00);
   delay_ms(100);
   output_b(0xFF);
   delay_ms(100);
   output_b(0x00);
   delay_ms(100);
   output_b(0xFF);
   delay_ms(100);
   output_b(0x00);
   delay_ms(100);
   }
   
   if(b==0x04)
   {
   output_b(0xFF);
   delay_ms(100);
   output_b(0x00);
   }
   
   }
   }
}




I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

skara1214

fast io ve set trisi kaldırıp deneyin donanımsal pinleri.Zaten putc v.s dediğinizde otomatik olarak giriş çıkış olarak ayarlanıyor pinler
Herkes ölür ama herkes gerçekten yaşamaz

eemuratozan

olayı daha da basitleştirdim ama yanmıo ledler bi bakın yeni kodlara isterseniz
verici


#include <RF Verici.h>
#use delay(clock=4000000)
#use rs232(baud=600, xmit=pin_c6,rcv=pin_c7,parity=N)
#use fast_io(b)


void main()
{  
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
   set_tris_b(0xFF);
   
   port_b_pullups(false);
   
   basla:
if(input(pin_b1))
{
    delay_ms(100);
    
    putc(0x55);
    putc(0x55);
    putc(0x55);
    putc(0x55);
    putc(0x55);
    
    putc(0x56);
    putc(0x56);    // vericiye 0x56 adını verdik
    putc(0x56);    // vericiye 0x56 adını verdik
    putc(0x56);    // vericiye 0x56 adını verdik
    putc(0x56);
    
    putc(0x01);
    putc(0x01);
    putc(0x01);
    putc(0x01);
    putc(0x01);
}
if(!input(pin_b1))
{
    putc(0x55);
    putc(0x55);
    putc(0x55);
    putc(0x55);
    putc(0x55);
    
    putc(0x56);    // vericiye 0x56 adını verdik
    putc(0x56);    // vericiye 0x56 adını verdik
    putc(0x56);    // vericiye 0x56 adını verdik
    putc(0x56);
    putc(0x56);
    
    putc(0x02);
    putc(0x02);
    putc(0x02);
    putc(0x02);
    putc(0x02);
}
goto basla;
}


alıcı


#include <RF Alıcı.h>
#use delay(clock=4000000)
#use rs232(baud=600,xmit=pin_c6,rcv=pin_c7,parity=N)
#use fast_io(b)


char al,gel;

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

    
   set_tris_b(0x00);
   output_b(0x00);
   


while(1)
  { 
  
  
  
  gel=getc();
  
  
   if(gel==0x56)    // frekans karışmasını önlemek için şifre...
   {
     al=getc();
   
   if(al==0x01)
   {
    output_b(0b00001111);
    delay_ms(100);
   }
   if(al==0x02)
   {
   output_b(0b11110000);
   delay_ms(100);
   }
  
   
   }
  }
}
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

pax

#use rs232 (baud=9600, xmit=pin_c6, rcv=pin_c7, parity=N, stop=1) kısmını bu şekilde tanımlı  olması gerekir . ben bu şekilde çalıştırıyorum.
veya
set_tris_c(0x80); bu kısımda hata yapıyorsunuz.  pin isimlerini değiştirince burayı değiştirmeyi unutuyor olabilirsiniz.

eemuratozan

sorunu halletmiştim hatta boardda da çalıştırdım yinede ilginize teşekkür ederim :)
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.

M_B

Alıntı yapılan: eemuratozan - 08 Nisan 2012, 10:18:04
sorunu halletmiştim hatta boardda da çalıştırdım yinede ilginize teşekkür ederim :)
sorun neymiş ?
Cozüm nedir ?
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

eemuratozan

sorun algoritmada da değilmiş donanımda da derleyici hex dosyasını değiştirmemiş yani hep bozuk dosyayı çalıştırmış çıkıp tekrar girdim aynı şeyi tekrar yazıp derledim oldu
I&C Engineer in Bereket Enerji Çates Elektrik Üretim A.Ş.