unsigned int8 veri bluetoothdan nasıl gönderilir ?[Çözüldü]

Başlatan baran123, 15 Ağustos 2014, 19:13:41

baran123

Merhabalar bir konuda yardımınıza ihtiyacaım var, bir uygulama yapıyorum telefondan hc06 ya 1 ve 0 göndererek 2550 ile bunu alıp led yakıcam ve bu durumu pc ye göndermeye calısıyorum veri tipleri hep kafamı karıstırıyor telefondan önceden char seklınde alıyordum verılerı sorunyoktu sımdı bu verileri usb den göndermek için usb_put_packet(UcNokta1, paket, 64, USB_DTS_TOGGLE); fonksiyonuna baktım paket'in int8 türünde olması gerekir yani telefondan int8 almam lazım doğrumu buraya kadar ? ben telefondan 1 e bastıgım zaman char gelen = '1' geliyordu int8 bilgi nasıl alırım 0x01 şeklinde denedim olmadı sizce ne yapmalı ? kodlar aşşağıda bir göz atarsanız sevinirim.İyi çalışmalar

devreyi usb den gelen 5v u 3.3v düşürerek besliyorum (lm1117 ile )

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

#define USB_HID_DEVICE     TRUE             
#define USB_EP1_TX_ENABLE  USB_ENABLE_INTERRUPT    //Uçnokta1'de Kesme transferi aktif
#define USB_EP1_RX_ENABLE  USB_ENABLE_INTERRUPT    
#define USB_EP1_TX_SIZE    64                      //Uçnokta1 için maksimum alınacak ve gonderilecek
#define USB_EP1_RX_SIZE    64 
#define UcNokta1  1 

#include <pic18_usb.h>                             //USB Konfigurasyon Dosyaları
#include <USB_Driver.h>                            //USB konfigurasyon bilgileri bu dosyadadır.
#include <usb.c>                                   //USB Konfigurasyon Dosyaları 

unsigned int8 gelen;
unsigned int8 paket[64];

#int_rda
void modul_kesmesi()
{
   disable_interrupts(int_rda);
   gelen=getch();   
   
   if(gelen==0x01)
   {
      output_high(pin_B6);
   }
   
   if(gelen==0x00)
   {
      output_low(pin_B6);
   }
}

void main(void)
{
   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);
   set_tris_c(0x80);
   
   usb_init();                      
   usb_task();                    
   usb_wait_for_enumeration();
   
   output_high(pin_B7);
   enable_interrupts(GLOBAL);
   
   while(TRUE)
   {      
      while(usb_enumerated())
      {
         enable_interrupts(int_rda);
         
         gelen = getch();
         
         if (usb_kbhit(1))
         {           
            usb_get_packet(UcNokta1, paket, 64);  
         }
         
         paket[2] = gelen;
         
         usb_put_packet(UcNokta1, paket, 64, USB_DTS_TOGGLE);
         gelen = getch();
      }
   }
}

Kabil ATICI

'1' karşılığı 0x31'dir. (ASCII tablosuna bak)

Kütüphanelerine bakmak gerek. Telefon string veya char olarak gönderiyorsa, 0x20 altında gönderemez.(boşluk karakteri) İşlemciye aslında int8 olarak gelir. Ama senin programı yazdığın derleyici kütüphanesine göre yorumlar.
ambar7

baran123

Tabloyu dikkate alarak 1 = 0x31 ve 0 = 0x30 yaptım bir şey daha sormak istiyorum.18F2550 deki D+ VE d-D- pinleri giriş mi çıkış mı olmalı çünkü ben Rx i giriş yapmak için 0x80 yapmıstım tris c ye

mesaj birleştirme:: 16 Ağustos 2014, 10:03:31

Ekleme : Kod bir bölümü yok iken çalışıyor yani usb özelliğini açınca bluettoth dan veri almıyor

/*while(usb_enumerated())
      {*/
         enable_interrupts(int_rda);
         
         /*gelen = getch();
         
         if (usb_kbhit(1))
         {           
            usb_get_packet(UcNokta1, paket, 64);  
         }
         
         paket[2] = gelen;
         
         usb_put_packet(UcNokta1, paket, 64, USB_DTS_TOGGLE);
         gelen = getch();
      }*/


yorum satırlarınıda dahil edince veri alamıyorum

mesaj birleştirme:: 15 Ağustos 2014, 20:50:41

tamamdır çözdüm aldığım veriyi int8 olarak pc gönderdim pc de gönderdiğim dizinin bir sonraki elemanını aldım karşılaştırma yaparak led durumunu pc de görebiliyorum teşekkürler @ambar7 hocam