Şimdi Ara

18F4550 USB Bağlantı Sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü, 1 Mobil
5 sn
2
Cevap
0
Favori
1.295
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
Öne Çıkar
0 oy
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar,

    Bilgisayar ile pic arasında usb haberleşme gerçekleşecek bir uygulama geliştiriyorum. Uygulamanın benzetimi (simülasyonu) başarılı olsa da devre üzerinde çalışmıyor. USB'yi bilgisayara bağladığımda kendisi sürücüyü yüklüyor ve işlem başarılı iletisini gönderiyor ancak buna rağmen işlemler gerçekleştirilmiyor. Kabloyu çıkarıp taktığımda ise sürücüde sorun gözüküyor. Bu sefer cihazı hiçbir şekilde tanımıyor.

     
    #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
    #use delay(clock=48000000)

    //20 Mhz'lik osilatör kullanıyorum

    #define USB_HID_DEVICE TRUE
    #define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
    #define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
    #define USB_EP1_TX_SIZE 64
    #define USB_EP1_RX_SIZE 64

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


    Bu konuda ne yapmamı tavsiye edersiniz?

    Teşekkürler



    _____________________________
  • Kodlarda aşağıdaki düzenlemeleri yaparak sorunu çözdüm

     
    #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
    #USE DELAY(CLOCK=20000000)

    Şu an ise veri iletiminde sorun yaşıyorum

    C# kodu

     
    void veriGonder()
    {
    if ((denetim== 1) && (usbHidPort1.SpecifiedDevice != null))
    {
    denetim= 0;
    int uzunluk= usbHidPort1.SpecifiedDevice.OutputReportLength;
    byte[] gidenVeri = new byte[uzunluk+ 1];

    gidenVeri[0] = 0;
    gidenVeri[1] = veri;

    usbHidPort1.SpecifiedDevice.SendData(gidenVeri);
    }
    }


    private void usbHidPort1_OnDataRecieved(object sender, DataRecievedEventArgs args)
    {

    int uzunluk= usbHidPort1.SpecifiedDevice.OutputReportLength;
    byte[] gelenVeri= new byte[uzunluk + 1];
    gelenVeri = args.data;
    denetim= gelenVeri [2]; //Veri iletimi başarılıysa 1 verisi alınıyor
    }
    }



    CCS C kodu

     
    #include <18F4550.h>

    #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
    #USE DELAY(CLOCK=20000000)

    #define USB_HID_DEVICE TRUE
    #define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT
    #define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT
    #define USB_EP1_TX_SIZE 64
    #define USB_EP1_RX_SIZE 64

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

    void main()
    {
    set_tris_d(0x00);
    output_d(0x00);

    usb_init();
    usb_task();
    usb_wait_for_enumeration();

    while(1)
    {
    while(usb_enumerated())
    {

    if (usb_kbhit(1))
    {
    usb_get_packet(1, gelenDizi, 64); // veri alınıyor
    gelenVeri= gelenDizi[0];
    output_d(gelenVeri);

    gidenVeri[0] = 1; // işlem başarılı ve 1 verisi gönderiliyor.
    usb_put_packet(1, gidenVeri,64, USB_DTS_TOGGLE);

    }
    }
    }



    Yaptığım gözlemler sonucunda, sadece ilk verinin yollandığını diğerlerinin iletilmediğini fark ettim. Bu durumu düzeltmek için ne yapabilirim?
    _____________________________




  • Yapay Zeka’dan İlgili Konular
    Soundbar bağlantı sorunu
    5 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.