USB Hid ve RF Sorunu

Başlatan veliusta, 28 Aralık 2012, 18:38:35

veliusta

#include <18F2550.h>
#fuses NOMCLR,HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)
#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7) 

#DEFINE USB_HID_DEVICE TRUE

#DEFINE USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
#DEFINE USB_EP1_TX_SIZE 8

#DEFINE USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
#DEFINE USB_EP1_RX_SIZE 8

/*********************************************************************************************************/

#include <pic18_usb.h> 
#include <USB_KODLAR.h>
#include <usb.c>

/*********************************************************************************************************/
int vg=0; //vericiden giden
int8 data[1];
void main()
{
   output_b(0x00);
   usb_init_cs(); 
basla:
   {
            usb_task();
                  if (usb_enumerated())
                  {
                     if (usb_kbhit(1))
                     {
                        usb_get_packet(1, data, 1);
                        switch(data[0]){
                        case 1:
                        output_toggle(PIN_B0);
                        break;
                        case 2:
                        output_toggle(PIN_B1);
                        break;
                        case 3:
                        output_toggle(PIN_B2);
                        break;
                        case 4:
                        output_toggle(PIN_B3);
                        break;
                        case 5:
                        output_toggle(PIN_B4);
                        break;
                        case 6:
                        output_toggle(PIN_B5);
                        break;
                        case 7:
                        output_toggle(PIN_B6);
                        break;
                        case 8:
                        output_toggle(PIN_B7);
                        break;
                        case 9:
                        output_b(0x00);
                        break;
                         } 
                     }
                  }
   goto basla;
}


kodlar yukarıdaki gibi ama şu kodu biyeri yerleştirmem gerek.       
" vg = input_b();
putc(vg);
"

bunu aşağılara yerleştirdiğimde usbden giden bilgileri almıyor ama b portun bir ine + verdiğimde diğer pic'e bilgiyi yoluyor. yani usb ve rfyi birilikte yapamadım.bi yardımcı olun lütfen.

devrenin amacı usbden aktif edilen b portları diğer 18f2550ye aktarmak.Daha önce bunu 16f628a ile birlikte yapıyordum.şimdi onu kaldırıp tek çatı altında toplamak istiyorum.




veliusta

#1
ccs c bilenlerden yardım istiyorum.yapılabilir mi?
yapacağım tam olarak budur
Resimdeki gördüğünüz 16f628a yı kaldırmak. bunu 18f2550'de birleştirmek istiyorum.

mesaj birleştirme:: 02 Ocak 2013, 20:49:18

şimdi resimde dikkatimi birşey çekti 18f2550 nin kristalinde kondansatör yok? kondansatörsüz çalışırmı osilatörü??
smd filan yapmıştır dicemde ozaman led dirençinide smd yapmazmıydı?

Eren Eraslan

628a kullanma sebebin nedir?

628 de olup 2550 de olmayan birşey yok zaten
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

XX_CİHAN_XX

Verici değil de alıcı olsa anlardım ama verici için çok saçma olmuş gerçekten iki pic kullanmak...
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

veliusta

#4
resimdekini ben yapmadım.banada saçma geldi. ama benim yaptığımda ona çok benziyor verici kısmı pbp ile yaptım.şimdi 16f628a css c verici kodunu 2550ya aktarmak.
oradaki kodda. B PORTU NASIL İSE ÖYLE GÖNDER. kodudur.  " vg = input_b();
putc(vg); "

mesaj birleştirme:: 02 Ocak 2013, 21:42:31

ve resimi kaldımış sanırım siteden. devre sahibide burada takılıyor herhalde.

benzer resim:

mesaj birleştirme:: 02 Ocak 2013, 21:47:34

Alıntı yapılan: ereneraslan7 - 02 Ocak 2013, 21:27:51
628a kullanma sebebin nedir?

628 de olup 2550 de olmayan birşey yok zaten

bilmiyorum sedaelektronik diye site var öyle yapmış satışını yapıyor.
http://www.sedaelektronik.com/index.php?route=product/category&path=35

mesaj birleştirme:: 02 Ocak 2013, 22:00:40

Alıntı yapılan: ereneraslan7 - 02 Ocak 2013, 21:27:51
628a kullanma sebebin nedir?

628 de olup 2550 de olmayan birşey yok zaten

Pic ile Kablosuz RF devresi
eren abi kristal le kondansatör bağlamadan nasıl çalıştırıyorsun entegreyi?

Eren Eraslan

Alıntı yapılan: veliusta - 02 Ocak 2013, 21:39:53
resimdekini ben yapmadım.banada saçma geldi. ama benim yaptığımda ona çok benziyor verici kısmı pbp ile yaptım.şimdi 16f628a css c verici kodunu 2550ya aktarmak.
oradaki kodda. B PORTU NASIL İSE ÖYLE GÖNDER. kodudur.  " vg = input_b();
putc(vg); "

mesaj birleştirme:: 02 Ocak 2013, 21:42:31

ve resimi kaldımış sanırım siteden. devre sahibide burada takılıyor herhalde.

benzer resim: (Resim gizlendi görmek için tıklayın.)(Resim gizlendi görmek için tıklayın.)

mesaj birleştirme:: 02 Ocak 2013, 21:47:34

bilmiyorum sedaelektronik diye site var öyle yapmış satışını yapıyor.
http://www.sedaelektronik.com/index.php?route=product/category&path=35

mesaj birleştirme:: 02 Ocak 2013, 22:00:40

Pic ile Kablosuz RF devresi
eren abi kristal le kondansatör bağlamadan nasıl çalıştırıyorsun entegreyi?

video daki devrede kristal var dikkat etmemişsin , kondansatör yok olmasada olur ama genelde koymak lazım dalgalanmayı engeller.
pic in kendi iç osilatörü var dışardan takmadan çalıştırabilirsin
http://electronics.stackexchange.com/questions/15753/use-pic-internal-oscillator
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

veliusta

#6
pic proje ekibi yardımlarınızı beklemekteyim.
arkadaş yardım edinde böyle yapayım devreyi

mesaj birleştirme:: 04 Ocak 2013, 23:31:28

Arkadaşlar kodlar bu kadar zormu anlamayamadım.bilen yokmudur allah aşkına.

Verici Kodlarım;
#include <16F628A.h>
#fuses NOMCLR,XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay(clock=4000000) 
#use rs232 (baud=9600, xmit=PIN_A0, rcv=PIN_A1) 
int vg=0; //vericiden giden

void main() 
{ 
   set_tris_b(0xff);
      
   while(1) 
   { 
      vg = input_b();
      putc(vg); 
      delay_ms(10); 
   } 
}


USB Hid (B portunu vb6 ile toggle yapıyor)'in kodları;

#include <18F2550.h>
#fuses NOMCLR,HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)

#DEFINE USB_HID_DEVICE TRUE

#DEFINE USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
#DEFINE USB_EP1_TX_SIZE 8

#DEFINE USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
#DEFINE USB_EP1_RX_SIZE 8

/*********************************************************************************************************/

#include <pic18_usb.h> 
#include <USB_easyHID_descriptores.h>
#include <usb.c>

/*********************************************************************************************************/

int8 data[1];
void main()
{
   output_b(0x00);
   usb_init_cs(); 
   while(1)
   {
            usb_task();
                  if (usb_enumerated())
                  {
                     if (usb_kbhit(1))
                     {
                        usb_get_packet(1, data, 1);
                        switch(data[0]){
                        case 1:
                        output_toggle(PIN_B0);
                        break;
                        case 2:
                        output_toggle(PIN_B1);
                        break;
                        case 3:
                        output_toggle(PIN_B2);
                        break;
                        case 4:
                        output_toggle(PIN_B3);
                        break;
                        case 5:
                        output_toggle(PIN_B4);
                        break;
                        case 6:
                        output_toggle(PIN_B5);
                        break;
                        case 7:
                        output_toggle(PIN_B6);
                        break;
                        case 8:
                        output_toggle(PIN_B7);
                        break;
                        case 9:
                        output_b(0x00);
                        break;
                         } 
                     }                                 
                  }
   }

}


YUKARIDAKİ İKİ KOD 18f2550 entegresinde Birleştirilecek.
Ben uğraştım ama olmadı.ccsye yeni başladığımdan.

mesaj birleştirme:: 04 Ocak 2013, 23:46:18

Tam Olarak yapmak istediğim bu. verici kısmını yaptımmı tamamdır.

sadogan

#7
#include <18F2550.h>
#fuses NOMCLR,HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)
#use rs232 (baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#DEFINE USB_HID_DEVICE TRUE

#DEFINE USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
#DEFINE USB_EP1_TX_SIZE 8

#DEFINE USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
#DEFINE USB_EP1_RX_SIZE 8

/*********************************************************************************************************/

#include <pic18_usb.h> 
#include <USB_easyHID_descriptores.h>
#include <usb.c>

/*********************************************************************************************************/

int8 data[1];
void main()
{
   output_b(0x00);
   usb_init_cs(); 
   while(1)
   {
            usb_task();
                  if (usb_enumerated())
                  {
                     if (usb_kbhit(1))
                     {
                        usb_get_packet(1, data, 1);
                        switch(data[0]){
                        case 1:
                        output_toggle(PIN_B0);
                        break;
                        case 2:
                        output_toggle(PIN_B1);
                        break;
                        case 3:
                        output_toggle(PIN_B2);
                        break;
                        case 4:
                        output_toggle(PIN_B3);
                        break;
                        case 5:
                        output_toggle(PIN_B4);
                        break;
                        case 6:
                        output_toggle(PIN_B5);
                        break;
                        case 7:
                        output_toggle(PIN_B6);
                        break;
                        case 8:
                        output_toggle(PIN_B7);
                        break;
                        case 9:
                        output_b(0x00);
                        break;
                         }
                        putc(data);   
                         
                     }
                     
                  }
   }

}

Usb den aldığı 1 byte seri den gönderir
USB_easyHID_descriptores.h bu dosya bende olmadıgından derleyemedim.
Verici kodun bu kadarmı test etmişmitdin ?

veliusta

#8
evet hocam vericinin kodları sağlam çalışıyor. isiste demedim sorun çıkartmıyor.

mesaj birleştirme:: 05 Ocak 2013, 00:19:45

hocam birde.
bu kodu unuttunuzmu?
int vg=0;

birazdan deneyeceğim sizin yazığınızı. teşekkürler yardımınız için

sadogan

vg değişkenine gerek yok
putc(data);   
usb icin tanımlanmış data değişkeni var yerine.

veliusta

#10
internette var h dosyası.
http://read.pudn.com/downloads191/doc/897540/Ejercicio%20N%C2%B01/Firmware%20del%20PIC18F2550/USB_easyHID_descriptores.h__.htm

mesaj birleştirme:: 05 Ocak 2013, 00:45:49

putc(data);   bunu kabul etmedi

mesaj birleştirme:: 05 Ocak 2013, 00:51:55

#include <18F2550.h>
#fuses NOMCLR,HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)
#use rs232 (baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#DEFINE USB_HID_DEVICE TRUE

#DEFINE USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
#DEFINE USB_EP1_TX_SIZE 8

#DEFINE USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
#DEFINE USB_EP1_RX_SIZE 8

/*********************************************************************************************************/

#include <pic18_usb.h> 
#include <USB_easyHID_descriptores.h>
#include <usb.c>

/*********************************************************************************************************/
int vg=0;
int8 data[1];
void main()
{
   output_b(0x00);
   usb_init_cs(); 
   while(1)
   {
            usb_task();
                  if (usb_enumerated())
                  {
                     if (usb_kbhit(1))
                     {
                        usb_get_packet(1, data, 1);
                        switch(data[0]){
                        case 1:
                        output_toggle(PIN_B0);
                        break;
                        case 2:
                        output_toggle(PIN_B1);
                        break;
                        case 3:
                        output_toggle(PIN_B2);
                        break;
                        case 4:
                        output_toggle(PIN_B3);
                        break;
                        case 5:
                        output_toggle(PIN_B4);
                        break;
                        case 6:
                        output_toggle(PIN_B5);
                        break;
                        case 7:
                        output_toggle(PIN_B6);
                        break;
                        case 8:
                        output_toggle(PIN_B7);
                        break;
                        case 9:
                        output_b(0x00);
                        break;
                         }
                        vg = input_b();
                        putc(vg);
                        delay_ms(10); 
                         
                     }
                     
                  }
   }

}


böyle yaptım olmadı. Cihazı görüyor bağlandı diyor. datayı gönderiyorum ama ledler yanmıyor.

sadogan

#11
oyle olmaz usb den okunan veri data değişkeninde
putc(data[0]);
bu şekilde düzelt
yanlız senin verici her 10 ms yede bir gönderim yapıyor.
bu ise yanlızca usb den veri gelince gönderiyor.
10 ms yede bir göndersin dersen
   while(1)
   {
            usb_task();
                  if (usb_enumerated())
                  {
                     if (usb_kbhit(1))
                     {
                        usb_get_packet(1, data, 1);
                        switch(data[0]){
                        case 1:
                        output_toggle(PIN_B0);
                        break;
                        case 2:
                        output_toggle(PIN_B1);
                        break;
                        case 3:
                        output_toggle(PIN_B2);
                        break;
                        case 4:
                        output_toggle(PIN_B3);
                        break;
                        case 5:
                        output_toggle(PIN_B4);
                        break;
                        case 6:
                        output_toggle(PIN_B5);
                        break;
                        case 7:
                        output_toggle(PIN_B6);
                        break;
                        case 8:
                        output_toggle(PIN_B7);
                        break;
                        case 9:
                        output_b(0x00);
                        break;
                         }
                         
                         
                     }
                     
                  }
                   putc(data[0]); 
                   delay_ms(10);
   }

burdaki değişikligi yapmalısın

mesaj birleştirme:: 05 Ocak 2013, 01:15:39

pardon bunu görmemişim
vg = input_b();

veliusta

#12
abi oldu gibi  ;D

alıcı verileri alıyor çıkışları değişik şekillerde veriyor..
sanırım binary olarak veriyor çıkışı.

örnek. butonları sırasi ile basıp ledleri yakıyorum.
1.buton = çıkıştan yanlız 1
2.buton = çıkıştan yanlız 2
3.buton = çıkıştan yanlız 1 ve 2
4.buton = çıkıştan yanlız 3
....
8.butondan = çıkıştan yanlız 4 (Not:Verici kısmında bütün ledler yanık)
Nasıl düzeltiriz.


mesaj birleştirme:: 05 Ocak 2013, 01:27:48

ALICI KISMI:

#include <18F2550.h>
#fuses NOMCLR,HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)
#use rs232 (baud=9600, xmit=PIN_C6, rcv=PIN_C7)

int vg=0; 

void main() 
{
   set_tris_b(0x00);
   
   while(1)
   {
   vg = getc();
   output_b(vg);
   }
}


mesaj birleştirme:: 05 Ocak 2013, 01:31:41

Alıcı kısmını mı değiştireceğiz? ikilik sistemi onluğamı çevireceğiz?
yanlız verici kısmında hangi butona basarsan o oluyor 8 bastın 4 yandı. sonra 7 ye bastık 1,2,3 ...

sadogan

Alici tarafı nasıl olsun daha açık yazabilirsen
yardımcı olmaya çalışayım

veliusta

şimdi aklıma geldi.
verici kısmı binary sayı gönderiyor.
iyide ben bu vericiyi şifreli göndermek isteyeceğim. diğer devreler ile karışmaması için.
ve uyandırma sinyali filan nasıl ekleyeceğim sonra.
onlar nasıl olacak.

mesaj birleştirme:: 05 Ocak 2013, 14:17:59

Alıcı kısmı: vericideki portb nasıl ise öyle olacak.
ben bu devreyi uzaktan araba için yapıyorum