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.
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...
Önce, pic kendi kendine LCD ekrana yazı yazabiliyor mu? bunu deneyelim.
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
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.
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
sanırım cevap bulamayacağız sorunuma başka projeye geçsek daha iyi olucak
Ö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.