![](templates/subSilver/images/CCSLogo.jpg) |
![CCS C Software and Maintenance Offers](templates/subSilver/images/forumAd6.jpg) |
View previous topic :: View next topic |
Author |
Message |
brahme.girish
Joined: 20 Jun 2010 Posts: 7
|
18f4550 usb controller |
Posted: Mon Oct 11, 2010 5:18 am |
|
|
Dear all,
Very best wishes.
I am using pic 18f4550 controller for usb to serial conversion.
I am trying to connect the Pic 18f4550 using the sample ccs code ex_usb_serial.c to make a virtual rs232 connection.
I am using <usb_cdc.h>.
I am able to make virtual com port on pc using this driver.
But I have one problem, whenever I try to open this com port using any serial port monitor software I got error "com port could be not opened".
I used crystal of 24mhz. Is this crystal problem.???????????
I uninstall driver and again install it till I persist same problem.
My source code is
Code: |
#define USB_CON_SENSE_PIN PIN_B2
//#include <18F4550.h>
#use delay(clock=24000000)
#include <usb_cdc.h>
#define LED2 PIN_D1
#define LED3 PIN_D2
#DEFINE BUTTON PIN_A4
#define LED_ON output_low
#define LED_OFF output_high
#DEFINE LED1 PIN_D0
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
void usb_debug_task(void) {
static int8 last_connected;
static int8 last_enumerated;
int8 new_connected;
int8 new_enumerated;
static int8 last_cdc;
int8 new_cdc;
new_connected=usb_attached();
new_enumerated=usb_enumerated();
new_cdc=usb_cdc_connected();
if (new_enumerated)
LED_ON(LED1);
else
LED_OFF(LED1);
if (new_cdc)
LED_ON(LED2);
else
LED_OFF(LED2);
if (usb_cdc_carrier.dte_present)
LED_ON(LED3);
else
LED_OFF(LED3);
if (new_connected && !last_connected)
printf("USB connected, waiting for enumaration...\r\n\n");
if (!new_connected && last_connected)
printf("USB disconnected, waiting for connection...\r\n\n");
if (new_enumerated && !last_enumerated)
printf("USB enumerated by PC/HOST\r\n\n");
if (!new_enumerated && last_enumerated)
printf("USB unenumerated by PC/HOST, waiting for enumeration...\r\n\n");
if (new_cdc && !last_cdc) {
printf("Serial program initiated on USB<->UART COM Port\r\n\n");
printf(usb_cdc_putc, "\r\n\nCCS CDC (Virtual RS232) Example\r\n\n");
}
last_connected=new_connected;
last_enumerated=new_enumerated;
last_cdc=new_cdc;
}
void main()
{
int8 out_data[20];
int8 in_data[2];
int8 send_timer=0;
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 Oscillator Config tab
OUTPUT_LOW(PIN_D0);
OUTPUT_LOW(PIN_D1);
OUTPUT_LOW(PIN_D2);
while(true)
{
usb_task();
usb_debug_task();
if(usb_enumerated()) {
if(!send_timer)
{
out_data[0]=50;//read_adc();
out_data[1]=25;//!input(BUTTON);
}
if (usb_kbhit(1))
{
usb_get_packet(1, in_data, 2);
printf("\r\n--> Received data: 0x%X 0x%X",in_data[0],in_data[1]);
if (in_data[0]) {LED_ON(LED2);} else {LED_OFF(LED2);}
if (in_data[1]) {LED_ON(LED3);} else {LED_OFF(LED3);}
}
send_timer--;
}
}
}
|
After connecting
cdc_NTXPVista.inf, driver loaded successfully, till I am having problem.
After compiling the source file I am getting the warning like this
interrupt disabled during call to re entrancy::(usb_token_reset)
interrupt disabled during call to re entrancy::(usb_cdc_flush_out_buffer)
interrupt disabled during call to re entrancy::(usb_flush_out)
Is these warnings have any relation with my problem ????????
I am using ccs4.084 version.
Can anyone help me please please,
very very thanx in adavance.
Quote: |
On device manager in my computer my it shows the usb to uart with
error usb device can not start code 10 |
regard,
Girish
Last edited by brahme.girish on Mon Oct 11, 2010 5:48 am; edited 1 time in total |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19382
|
|
Posted: Mon Oct 11, 2010 5:29 am |
|
|
We need to see your fuse settings.
24MHz, can be used fine, but to give 24MHz as the CPU frequency, and the correct USB frequency, you will need the oscillator fuses as:
HS, CPUDIV1, PLL6
Learn to use the code buttons, otherwise the code is basically almost unreadable....
You show huge lumps of code, that are never going to be reached as posted. What are the sections like 'if (new_enumerated), meant to do?.
You have the classic 'wizard' error for SETUP_SPI. Needs to have 'false', not 'SPI_SS_DISABLED'. The latter turns off the slave select in a slave system, not the port itself.
Use the original demo program, just change the fuses for your 24MHz crystal, and see if this works, _before_ trying to do your own code.
Best Wishes
Last edited by Ttelmah on Mon Oct 11, 2010 10:07 am; edited 1 time in total |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19382
|
|
Posted: Mon Oct 11, 2010 8:16 am |
|
|
And, on the warnings, no.
They are just 'warnings', not errors. They occur because a couple of the CCS setup routines, call subroutines that are also used in the interrupt code. As a result, to prevent the possibility of code being called 'inside itself' (which would happen if an interrupt occurred while the external code was calling the same code), which is not supported on the PIC because of it's lack of a data stack, the compiler ensures that this can't happen by disabling interrupts in the external routines calling the functions., and gives this warning. The warning is given about this, because if the external code was 'timing critical', it might be necessary to re-write the code to avoid this. In this case it isn't, and the warnings do not matter.
Best Wishes |
|
![](templates/subSilver/images/spacer.gif) |
brahme.girish
Joined: 20 Jun 2010 Posts: 7
|
|
Posted: Tue Oct 12, 2010 1:50 am |
|
|
Ttelmah wrote: | And, on the warnings, no.
They are just 'warnings', not errors. They occur because a couple of the CCS setup routines, call subroutines that are also used in the interrupt code. As a result, to prevent the possibility of code being called 'inside itself' (which would happen if an interrupt occurred while the external code was calling the same code), which is not supported on the PIC because of it's lack of a data stack, the compiler ensures that this can't happen by disabling interrupts in the external routines calling the functions., and gives this warning. The warning is given about this, because if the external code was 'timing critical', it might be necessary to re-write the code to avoid this. In this case it isn't, and the warnings do not matter.
Best Wishes
|
hi,
Thanx for suggesting such modification. I made all that changes, but still the problem is same. Rather I uninstall that driver from my computer. And now I am using the samle program for usb cdc. This time there is no indication after connecting pic to pc.
Please help me.
best wishes,
girish |
|
![](templates/subSilver/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|