|
|
View previous topic :: View next topic |
Author |
Message |
Imad84
Joined: 29 May 2006 Posts: 6
|
Missing #ENDIF Error |
Posted: Sun Jun 04, 2006 6:39 am |
|
|
Hi all, i am using this code to test the USB communication between an 18F4550 as a device and the host (PC)
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NODEBUG,NOLVP,USBDIV,PLL4,VREGEN,CPUDIV1
#use delay(clock=20000000)
#include <pic18_usb.h> //Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver
#include <pic_usb.h> //Configuraci�n del USB y los descriptores para este dispositivo
#include <usb.c> //handles usb setup tokens and get descriptor reports
/////////////////////////////////////////////////////////////////////////////
//
// CCS Library dynamic defines. For dynamic configuration of the CCS Library
// for your application several defines need to be made. See the comments
// at usb.h for more information
//
/////////////////////////////////////////////////////////////////////////////
#define USB_HID_DEVICE FALSE //not using a HID Device
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK //specify the transfer method on EndPoint 1 device --> PC
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK //specify the transfer method on EndPoint 1 PC --> device
#define USB_EP1_TX_SIZE 1 //size to allocate for the tx endpoint 1 buffer (device --> PC)
#define USB_EP1_RX_SIZE 3 //size to allocate for the rx endpoint 1 buffer (PC --> device)
#define mode receive[0]
#define param1 receive[1]
#define param2 receive[2]
#define resultat envoi[0]
void main()
{
int receive[3]; //variables declaration
int envoi[1];
output_low(pin_d0); // indication
output_high(pin_d1);
usb_init(); //USB initialisation
usb_task(); //keeps track of connection sense
usb_wait_for_enumeration(); //infinite loop until device is enumerated
output_low(pin_d1);
output_high(pin_d0); //
while (1)
{
if(usb_enumerated()) // the device is enumerated
{
if(usb_kbhit(1)) //returns true if endpoint 1 contains data from host
{
usb_get_packet(1, receive, 3); //get a packet from endpoint 1 and save it in receive (max ammount of data is 3)
if(mode == 0) // Add Mode
{
resultat = param1 + param2; // Add teh 2 parameters
usb_put_packet(1, envoi, 1, USB_DTS_TOGGLE); //send a packet to the host
}
if(mode == 1) // Mode_Led
{
if (param1 == 0)
{
output_low(pin_d0);
output_low(pin_d1);
}
if (param1 == 1)
{
output_high(pin_d0);
output_low(pin_d1);
}
if (param1 == 2)
{
output_low(pin_d0);
output_high(pin_d1);
}
}
}
}
}
}
i am getting the following error:
Error[14] C:\Documents and Settings\ielrass\Desktop\test.c 164 : Missing #ENDIF
Any Idea?
thanks |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sun Jun 04, 2006 1:48 pm |
|
|
It could be a problem with one of the USB files that you have #included.
Post your version of the compiler. If I have your version, I'll install it
and check those files. |
|
|
Imad84
Joined: 29 May 2006 Posts: 6
|
|
Posted: Mon Jun 05, 2006 5:13 am |
|
|
Hello,
The version of the compiler is V3.249
Thanks 4 help |
|
|
Ttelmah Guest
|
|
Posted: Mon Jun 05, 2006 7:18 am |
|
|
Without looking at the rest of the code, there is something 'screwy', in the includes being selected. 'pic_usb.h', is the incluide for using the 16C765 hardware layer, which is _not_ what is being used on a 18F4550. In fact two hardware layer includes are being made, which I am not suprised causes problems (if you look at the examples, one, or the otehr of these is loaded, according to the chip selected...).
Then, there is no device descriptor being loaded before usb.c. This is the usb_desc_xxx.h include file, where 'xxx', is hid, cdc etc..
I suspect it is the multiple hardware driver, that is causing the problem, with the include file 'going wrong', because another hardware layer is already loaded.
Best Wishes |
|
|
Ttelmah Guest
|
|
Posted: Mon Jun 05, 2006 7:25 am |
|
|
As a confirmation, removing the second hardware driver file, adding a descriptor file, and moving the device defines above the load for usb.c, allows this to compile OK.
Best Wishes |
|
|
Imad84
Joined: 29 May 2006 Posts: 6
|
|
Posted: Mon Jun 05, 2006 10:35 am |
|
|
Hello Ttelmah,
did u mean removing #include <pic_usb.h> and replace it by
#include<usb_desc_cdc.h>
then put the #include <usb.c> just before the main?
that what i did, i got 73 errors....
Maybe i didn t understand what u mean...
Best Wishes |
|
|
|
|
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
|