PIC18F4550 Usb HID Lcd & Led Uygulaması (CCS C)

Arkadaşlar Bootloader konusunda bilgi almak istiyorsanız
Tiny PIC bootloader
adresine bakınız burada bootloader yazılımlarının karşılaştırmaları var.çok faydalı.hepsini çalıştırıp öğrenmenize gerek yok adamlar güzelce yapmış çalışmayı.hangi bootloaderin ne kapasitede olduğunu buradan öğrenebilirsiniz.
 
Tmcone hocam, öncelikle eline sağlık. Bitirme projemin haberleşme kısmını USB ile yapacağım. USB'yi anlamak ve basit bir giriş yapmak için ledlerle bir uygulama yaptım.

Kırmızı Led yanarken, USB kablosu takılı değil
Sarı Led yanarken, USB kablosu takılı fakat bilgisayar tanımıyor(!enumerated)
Yeşil Led ise USB takılı ve cihaz bilgisayar tarafından tanındı.

Proteusta yazdığım kod çalışıyor ancak devreyi kurduğum zaman bir türlü çalıştıramadım. VUSB bacağına 470nF bağladım, 20Mhz osilatör ve 15pf kapasitör kullandım. Ancak nedense kabloyu bilgisayara taktığımda, bilgisayardan hiçbir tepki gelmedi. Sebebi ne olabilir?

Yazdığım kod:
Kod:
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN
#use delay (clock=48000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#DEFINE USB_HID_DEVICE  true

#define USB_EP1_TX_ENABLE  USB_ENABLE_INTERRUPT   //turn on EP1 for IN bulk/interrupt transfers
#define USB_EP1_TX_SIZE    8  //allocate 8 bytes in the hardware for transmission

//the following defines needed for the CCS USB PIC driver to enable the RX endpoint 1
// and allocate buffer space on the peripheral
#define USB_EP1_RX_ENABLE  USB_ENABLE_INTERRUPT   //turn on EP1 for OUT bulk/interrupt transfers
#define USB_EP1_RX_SIZE    8  //allocate 8 bytes in the hardware for reception

#include <pic18_usb.h>
#include <USB.H>
#include <usb_desc_hid.h>
#include <usb.c>
#define USB_CON_SENSE_PIN PIN_B2
#define usb_attached() input(USB_CON_SENSE_PIN)


#use fast_io(d)
int8 x;


void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillotar Config tab

   // TODO: USER CODE!!
   set_tris_d(0x00);
   output_d(0x00);
   usb_init();
   x=0;
     
   while(1)
   {
    
     usb_task();  
    
      if(usb_attached() && usb_enumerated())
     {
        output_d(0x01); 
        
     }
            
     else if(usb_attached() && !usb_enumerated())
     {
        output_d(0x04);
        
     }
     else if(!usb_attached())
     {
        output_d(0x02);   
     
     }  
         
   
   }
   
   
   
   

}


Yardımcı olursanız sevinirim.:)


hocam while içinde usb_task(); periyodik çağırınca benimkini de görmedi
oyüzden while(1) den önce usb_init(); ardından usb_task();
çağırmalıyız main içine ,

lcd_init();


usb_init();
usb_task();
printf(lcd_putc,"USB BAGLANTISI");//USB baglantisi kurulduysa LCD'de göster
lcd_gotoxy(1,2);
printf(lcd_putc,"KURULUYOR...");//USB baglantisi kurulduysa LCD'de göster


usb_wait_for_enumeration(); //Cihaz, hazır olana kadar bekle
if(usb_enumerated())
output_high(pin_d0);
lcd_gotoxy(1,1);
printf(lcd_putc,"\fUSB BAGLANTISI");//USB bağlantısı kurulduysa LCD'de göster
lcd_gotoxy(1,2);
printf(lcd_putc,"KURULDU !");//USB bağlantısı kurulduysa LCD'de göster

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

if (usb_kbhit(1)) //Eğer pc'den yeni bir paket geldiyse
{
usb_get_packet(1, paket, 64); //paketi oku
//gelen mesajı değerlendir.
}
}
}
 
arkadaşlar C# ile yazdığım host ile lcdye veri yazıp led kontrolü yapabiliyorum ancak picten herhangi bir şekilde veri okutamadım başaran varsa kod paylaşabilir mi?
 
Uyari: Pic kodunda paket boyutlarını 64 olarak değiştirin. Aşağıdaki gibi olacak:

byte gelen_paket[64];
byte gond_paket[64];

...
usb_get_packet(UcNokta1, gelen_paket, 64);

...
if(usb_put_packet(UcNokta1, gond_paket, 64, USB_DTS_TOGGLE))


64 yerine 5 kullanabilir miyim üstad? 5 byte'lık veri bana yetiyor da.(2009'un konusu ama...)
 
CCS C 4.130 da verilen kodlar derleme dahi yapmıyor malasef. tıkanıp kalıyor program..
 
iyi günler usb yi bağladıktan sonra projenin çalışması için herhengi bir sürücüye ihtiyac var mi?? MCHPFSUSB v 1.2 gibi
 
usb yi bilgisayara taktıgım zaman bilgisayar usb yi tanımıyor neden olabilir yardımcı olursanız sevinirim
 

Forum istatistikleri

Konular
127,957
Mesajlar
913,907
Kullanıcılar
449,606
Son üye
rasit.

Yeni konular

Geri
Üst