USB HID sorunu

Başlatan monelge, 11 Ekim 2010, 02:00:24

monelge

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.
Dünyadaki en tehlikeli üç şey: 1) Elinde lehim makinesi olan bir programcı. 2) Yazılımla çalışan bir donanım. 3) Aklına fikir gelen bir kullanıcı.

RcALTIN

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...
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

t2

Önce, pic kendi kendine LCD ekrana yazı yazabiliyor mu? bunu deneyelim.

monelge

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
Dünyadaki en tehlikeli üç şey: 1) Elinde lehim makinesi olan bir programcı. 2) Yazılımla çalışan bir donanım. 3) Aklına fikir gelen bir kullanıcı.

t2

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.

monelge

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
Dünyadaki en tehlikeli üç şey: 1) Elinde lehim makinesi olan bir programcı. 2) Yazılımla çalışan bir donanım. 3) Aklına fikir gelen bir kullanıcı.

monelge

sanırım cevap bulamayacağız sorunuma başka projeye geçsek daha iyi olucak
Dünyadaki en tehlikeli üç şey: 1) Elinde lehim makinesi olan bir programcı. 2) Yazılımla çalışan bir donanım. 3) Aklına fikir gelen bir kullanıcı.

tmcone

Ö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.