CCS ile USB den gelen veriyi Seri iletisimle baska PIC'e gönderemiyorum

Başlatan Digimensch, 15 Kasım 2011, 23:59:18

Digimensch

CCS kodlari ile PC den USB HID yardimi ile PIC18F4550 'ye veri gönderip o veriye göre PIC18F4550 kendi Pinlerine bagli Ledleri yakip söndürebiliyorum.Yani PIC18F4550 nin kendi üzerindeki Pinlerini kontrol edebiliyorum.
Buraya kadar ok.
Simdi yapmak istedigim gönderdigim komutu bu PIC18F4550 alsin seril iletisim üzerinden pic18f628'e göndersin , pic18f628 bu komuta göre ilgili pinlere bagli ledleri yaksin.
Bu is icin yani veri göndermek icin pic18f4550 de
#USE RS232 (baud=9600,bits=8,parity=N,xmit=PIN_C6)  //Seri iletisim icin
  satirini tanimladim.
ve PC den gelen veriyi alip  su sekilde gönderiyorum
         if (usb_kbhit(1))                 //Eger pc'den yeni bir paket geldiyse
         {         
            usb_get_packet(UcNokta1, paket, 64); //paketi oku           
            switch(komut)                  // Paketin ilk elemanindaki komutu oku ve ilgili göreve git
               {
                  case 'a':      // Gelen veri a ise
 putc('a');                      // a yolluyorum

                  break;
                           
}


Yine alici PIC16f628 de su satiri tanimliyorum
#use rs232 (baud=9600, xmit=PIN_B2, RCV=PIN_B1, parity=N, stop=1)


ve Kesme kullanarak  gelen veriye göre söyle bir islem yapmasini istiyorum.
#INT_RDA
void seri_kesme()
{  disable_interrupts(INT_RDA);
   temp=getc();
}

void main()
{  set_tris_b(0x02);
   set_tris_a(0x00);
   output_b(0x00);
   output_a(0x00);
   enable_interrupts(GLOBAL);
   while(true)
   {  
enable_interrupts(int_rda);
     
 if(temp=='a')   // gelen veri  a ise
      {  
         //Su islemleri yap
         output_bit(PIN_A3,1);
         output_bit(PIN_A2,0);
         output_bit(PIN_A1,0);
         output_bit(PIN_A0,0);
         temp=0X00;
      }
}
}


Sorun su:
ISIS'de calismasina ragmen esas uygulamada ne yaptimsa 16f628 de hic bir hareket olusmuyor.
Acaba veriyi göndermedemi hatam var yoksa veriyi almadami?

skara1214

usb kullanırken ftdi kullandığım için  onuda rs232 komutlarıyla kullanıyorum usb komutlarını pek bilmiyorum fakat benim seri iletişime başıma gelen böyle bilgisayarda birden fazla seri iletişimi tanımlandığında benimde başıma böyle şeyler geliyordu bende tüm rs232 bağlantılarını stream ile tanımlamaya başladım sizde bir deneyin bence.
Herkes ölür ama herkes gerçekten yaşamaz

Digimensch

Ben birden fazla seri iletisim kullanmiyorumki?
Verici pic18F4550
Alici pic16F628 

Vericide usb hid baglantisi var PC ile.Bu baglantidan veri gönderiyorum, gelen veriyi bu PIC18F4550 Seri iletisim ile (xmit=PIN_C6)  alici Pic16F628'e  gönderiyor.
PIC16F628 gelen veriyi (RCV=PIN_B1) pini üzerinden aliyor ve gerekli Pinlerdeki Ledleri yakiyor.Yani yapmak istedigim Pic18F4550 ye USB üzerinden veri gönderecegim, bu Picde gelen veriyi seri iletisim yöntemi ile pic16F628'e gönderecek. Pic16F628 bu verilere göre islem yapacak.
Her iki Pic'dede 4 MHZ lik kristal bagli.
Pic18F4550 48000000 Clock da , Pic16F628 4000000 Clock'da calisiyor.Burasi sorun olabilirmi?
Dedigim gibi ISIS'de gayet güzel calisiyor.
Ama gercek uygulamada hic bir reaksiyon yok.

computerboy

putc

yerine

printf("AT+CMGF=1\r");

bu komutu denedinizmi hocam.

Okan AKÇA


ferdem

set_tris_b(0x02);
set_tris_a(0x00);
output_b(0x00);


output_b(0x00); satırı RX pinini çıkışa şartlamış olabilir, o satırı silip bir deneyebilirsiniz.

Alıcı taraf data alınca bir led i toggle etsin, alıcıya bilgisayar seri porttan veri gönderip sadece alıcıyı deneyin. Alıcı-verici iki bilinmeyeni yerine emin olduğunuz bilgisayar seri portunu kullanın, denemeleri öyle yapın, datayı kim gönderemedi-kim alamadı anlaşılır. Kolay gelsin.

Digimensch

output_b(0x00);  satirini kaldirdim denedim yine tik yok.
Acaba INVERT sorunu olabilirmi?
Verci Picmi invert yapmali, Alici Picmi Invert yapmali? Sorun bu olabilrmi?


Seral Portdan dememe imkanim yok.Laptoop kullandigim icin serial port ve converterim yok.
o nedenle USB üzerinden pic18f4550 ye gönderiyorum oda pic18f628 e gönderecek.
ama olmuyor.Oysa ISIS'de ayni proje gayet güzel calisiyor.

Projeyi burdan sunuyorum bir göz atarsaniz sevinirim.
https://rapidshare.com/files/2810107433/Proje.rar

ehliseyf

CCS C de komutlardan birisi /n ekliyordu sanırım . Putc miydi puts miydi birisi ekliyordu ama bir diğeri eklemiyordu. belkide sonuna Enter bekliyordur.

birzamanlar böyle bir sıkıntı yaşamıştım. /n enter anlamına geliyordu sanırım.Şuan kitap olmadıgı için yanımda tam bilmiyorum.Yanıltmak istemem ama belki fikir verebilir.
Code'm mu oturturum !

kantirici

@Digimensch konuyla alakasız ama bir soru sormak istiyorum.Yazdıgınız programla usb den veri geldiginde kesme ile bu veriyi okuyabiliyormusunuz yoksa her seferinde if (usb_kbhit(1)) ile veri gelmişmi diye kontrol etmek mi gerekiyor tşkler.

justice_for_all

ben projeni calistirdim ama 16f628de hic bi hareket yok sende calisiyomuydu ledler yaniyomuydu?
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

Digimensch

Alıntı yapılan: justice_for_all - 16 Kasım 2011, 22:48:38
ben projeni calistirdim ama 16f628de hic bi hareket yok sende calisiyomuydu ledler yaniyomuydu?
ISIS'de calisiyordu.
Ama gercek uygulamada tik yok !!! Calistigina dair Videosunu burdan indirip bakabilirsin.
https://rapidshare.com/files/2196833855/Isis.rar

@kantirici
USB den veri geldigini bildiren kesme yok.

RS232 den veri geldigini bildiren kesme var ama USB icin yok...

Digimensch

Tamam arkadaslar sorunu cözdüm.
verici pic'de kullandigim
Switch() - Case funksiyounu  If - Else funksiyonu ile degistirince sorun kalkti.
Simdi artik araya RF alici verici koyup deneme yapacagim !!!

Digimensch

Yardimci olan Arkadaslara tesekkürler !!

xxlxxl

selam hocam çalışan proje ye çok ihtiyacım var nerde düzenleme yaptınız verebilirmisnizz

eraygil

projeniz ilgimi çekmişti ancak isiste bile çalıştıramadım  :-\  acaba bu konuda yardım edebilirmisiniz