Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: monelge - 11 Ekim 2010, 02:00:24

Başlık: USB HID sorunu
Gönderen: monelge - 11 Ekim 2010, 02:00:24
Merhaba Arkadaşlar;

birkaç gündür usb hid uygulaması üzerinde çalışıyorum ama bir yerde takıldım. c# ile hazırladığım programdan gönderdiğim sayı(0-99 arası)  LCD de veyahut 7 seg displayde gösteremiyorum farklı krakter veya sayılar çıkıyor yardımlarınızı rica ediyorum.

#define __USB_PIC_PERIF__ 1
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#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 <desc_hid.h>   
#include <usb.c>       
#include <lcd.c>   
#include <math.h>

BYTE CONST LED_MAP[10] = {0x3F,0x06,0x5B,0x4F,0X66,0X6D,0X7D,0X07,0X7F,0X67};
void usb_debug_task(VOID)
{
   STATIC int8 last_connected;
   STATIC int8 last_enumerated;
   INT8 new_connected;
   INT8 new_enumerated;
   new_connected = usb_attached () ;
   new_enumerated = usb_enumerated () ;
   last_connected = new_connected;
   last_enumerated = new_enumerated;
}

void main()
{
   INT in_data[2];
   INT birler;
   INT onlar;
   INT sonuc;
   
   usb_init_cs () ;

   WHILE (TRUE)
   {
      usb_task () ;
      usb_debug_task () ;
      lcd_init () ;

      IF (usb_enumerated ())
      {
         IF (usb_kbhit (1))
         {
           
            usb_get_packet (0, in_data, 2);
            birler = in_data[1];
            onlar = in_data[0];
            sonuc = onlar|birler;
         }

         printf (lcd_putc, "\nUSBN: %u", sonuc);
      }

     
   }
}


yardımlarınız için şimdiden teşekkür ederim.
Başlık: Ynt: USB HID sorunu
Gönderen: RcALTIN - 11 Ekim 2010, 06:08:15
Değeri LCD'ye %u yerine %s veya %x ile bastırmayı deneyiniz, siz sayı gönderiyorsanızda gelen veri string ifadeye dönüşüyor olmalı, hal böyle olunca gelen ifade gönderilen sayının ascii kodu olmuş olur; en azından bu bahsettiğim parametreleri bir deneyin...
Başlık: Ynt: USB HID sorunu
Gönderen: t2 - 11 Ekim 2010, 06:31:08
Önce, pic kendi kendine LCD ekrana yazı yazabiliyor mu? bunu deneyelim.
Başlık: Ynt: USB HID sorunu
Gönderen: monelge - 14 Ekim 2010, 22:34:05
merhaba lcd yazmayı denediğimde de sonuc aynı sayı değeri yerine garip(acii kodlar olabilir) şekiller çıkıyor. evet sorunum aslında gelen veriyi string değer olrak algılıyor fakat gönderilen veriyi int değer olraak algılatamamamda sorun ama ne denediysem olmadı sizin farklı çözümleriniz varsa deneyebilirim
Başlık: Ynt: USB HID sorunu
Gönderen: t2 - 14 Ekim 2010, 22:47:13
Ben mi yanlış anladım pic kendi başına lcdye birşeyler yazamıyor gibi. Eğer öyleyse USB ile alakası yok. öncelikle bu sorunu aşmanız gerek.
Başlık: Ynt: USB HID sorunu
Gönderen: monelge - 14 Ekim 2010, 23:12:11
usb üzrinden gönderdiğim 10 sayısına karşın 54 yazıyor 11 gönderdiğimde e4 yazıyor pic lcd haberleşmeinde sorun yok veri geliyor fakat doğru şey yazmıyor. lcd_putc,"%x",sonuc değeri bu şekilde
Başlık: Ynt: USB HID sorunu
Gönderen: monelge - 16 Ekim 2010, 09:26:45
sanırım cevap bulamayacağız sorunuma başka projeye geçsek daha iyi olucak
Başlık: Ynt: USB HID sorunu
Gönderen: tmcone - 16 Ekim 2010, 10:55:56
Öncelikle koddaki hatayı düzelt. Tanımlamalarına göre Uçnokta 1'den veri okumalısın.
          usb_get_packet (1, in_data, 2);

Sorunun çözülmezse 'hid report descriptor' ı kontrol et.

Sorun devam ederse bir USB analiz yazılımı kullanarak verinin doğru gönderildiğinden emin ol.