07arunsharma
Joined: 05 Mar 2012 Posts: 18 Location: India
|
Simple HID USB Class Program not working pls help... |
Posted: Wed Mar 28, 2012 11:31 am |
|
|
Hello!! Everyone!!!
I am new to CCS PIC-C and wants to do some usb programming with it.
Earlier i had used mikroC but doesn;t like that much..
I had write a simple code, which displays the data on lcd which is sent from PC, suppose i send "arun sharma" it must be displayed on LCD.
But i a unable to do so properly.
Here is my Code
Code: |
//rhydoLABZ PIC18F4550 Development Board
#include <18F4550.h>
#device ADC=8
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
//RS232 Configuration
#use rs232(baud=9600, UART1, errors)
#define LED1 PIN_B7
#define LED2 PIN_B6
#define LED3 PIN_B5
//Transmit and Receive Packet Size
#define USB_CONFIG_HID_TX_SIZE 16
#define USB_CONFIG_HID_RX_SIZE 16
/*******VENDOR ID AND PRODUCT ID********/
#define USB_CONFIG_PID 1 //Chnage Vendor Id and Product Id
#define USB_CONFIG_VID 4660 //So that they will work with my Application
/***************************************/
/*******LCD Pin Configuration******/
#define LCD_ENABLE_PIN PIN_C2
#define LCD_RS_PIN PIN_C1
#define LCD_RW_PIN PIN_C0
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
/***********************************/
#include<pic18_usb.h>
#include<usb_desc_hid.h>
#include<usb.c>
#include<lcd.c>
//Macro Definition for LED ON and OFF
#define LED_ON(x) output_low(x)
#define LED_OFF(x) output_high(x)
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();
if (new_enumerated)
LED_ON(LED1);
else
LED_OFF(LED1);
if (new_connected && !last_connected)
printf("\r\n\nUSB connected, waiting for enumaration...");
if (!new_connected && last_connected)
printf("\r\n\nUSB disconnected, waiting for connection...");
if (new_enumerated && !last_enumerated)
printf("\r\n\nUSB enumerated by PC/HOST");
if (!new_enumerated && last_enumerated)
printf("\r\n\nUSB unenumerated by PC/HOST, waiting for enumeration...");
last_connected=new_connected;
last_enumerated=new_enumerated;
}
void main(void)
{
unsigned char in_data[16];
unsigned int i;
set_tris_b(0x00); //Port-B as Output Port
set_tris_c(0x10);
output_b(0x00);
LED_OFF(LED1);
LED_OFF(LED2);
LED_OFF(LED3);
lcd_init(); //Initialize the LCD Module
lcd_gotoxy(3,1);
lcd_putc("PIC18F4550");
Delay_ms(1000);
lcd_gotoxy(3,2);
lcd_putc("USB EXAMPLE!");
printf("\r\n\nUSB Test Program--->Written in CCS PIC-C");
printf("\r\nEMBEDDED LABORATORY\r\n");
usb_init_cs();
Delay_ms(1000);
lcd_putc("\fRECEIVED DATA:-");
Delay_ms(1);
while(1)
{
usb_task();
usb_debug_task();
if(usb_enumerated())
{
if(usb_kbhit(1))
{
lcd_gotoxy(2,1);
lcd_putc(" ");
usb_get_packet(1,in_data,2);
printf("\r\nReceived Data: ");
for(i=0;i<16;i++)
{
printf("%c",in_data[i]);
//Send the Recevied Data to Serial Port
lcd_gotoxy(1,2);
lcd_putc(in_data[i]);
}
//Now Clear the in_data array
for(i=0;i<16;i++)
{
in_data[i] = '\0'; //Null Character
}
}
}
}
}
|
I am using the application given with mikroC to communicate from PC and also the given on this site
http://sites.google.com/site/coolembeddedlaboratory/home/visual-basic
according to me the application are working fine,
this program works satisfactory when i had not change the
#define USB_CONFIG_HID_TX_SIZE 16
#define USB_CONFIG_HID_RX_SIZE 16
and retain them to the value of 2
But that doesn't fulfill my requirements.
at least a array of size 16 is must for me...
Can any one tell me why my program doesn't works.
NOTE:-
#define USB_CONFIG_HID_TX_SIZE 2
#define USB_CONFIG_HID_RX_SIZE 2
By using this
#define USB_CONFIG_HID_TX_SIZE 16
#define USB_CONFIG_HID_RX_SIZE 16
everything works fine..
Pls Help
Thanks in Advance _________________ Arun Sharma |
|