CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

Switch LED on/off with 18F4550
Goto page 1, 2  Next
 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
benni



Joined: 28 Jun 2012
Posts: 28

View user's profile Send private message

Switch LED on/off with 18F4550
PostPosted: Sun Dec 23, 2012 12:42 pm     Reply with quote

Hello,

I would really like to know how i can switch Leds on/off with my computer
like on this example just on the 18F4550:
http://www.sprut.de/electronic/pic/8bit/18f/programm/usb2550/usb2550.htm and his example and schematic

Is there already a tutorial in the Forum?

Would this code work:
Code:
#include <main.h>


// Includes all USB code and interrupts, as well as the CDC API
#include <usb_cdc.h>
#use rs232(baud=9600, UART1, errors)
/////////////////////////////////////////////////////////////////////////////
//
// usb_debug_task()
//
// When called periodically, displays debugging information over serial
// to display enumeration and connection states.  Also lights LED2 and LED3
// based upon enumeration and connection status.
//
/////////////////////////////////////////////////////////////////////////////
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_connected)
     output_high(PIN_B1);
   else
     output_low(PIN_B1);

   if (new_enumerated)
     output_high(PIN_B2);
   else
     output_low(PIN_B2);


   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)
{
   BYTE i;

   output_low(PIN_B0);
   output_low(PIN_B1);
   output_low(PIN_B2);


   output_high(PIN_B0);

   usb_init_cs();
   
   for(;;)
   {
      usb_task();
      usb_debug_task();
      if (usb_enumerated())
      {
         if (usb_cdc_kbhit())
         {
            i = usb_cdc_getc();
           
            if (i == 0x80)
            {
               output_high(PIN_B2);
            }
         }
      }
   }
}



when i send with a C# Program this:

Code:
   public bool TurnLedOn()
            {
            // Command 0x80 - Turn LED on

            // Declare our output buffer
            Byte[] outputBuffer = new Byte[65];

            // Byte 0 must be set to 0
            outputBuffer[0] = 0;

            // Byte 1 must be set to our command
            outputBuffer[1] = 0x80;

            // Perform the write command
            bool success;
            success = writeRawReportToDevice(outputBuffer);

            // We can't tell if the device received the data ok, we are
            // only indicating that the write was error free.
            return success;
            }


Thanks for help
Regards Benni


Last edited by benni on Sun Dec 23, 2012 4:12 pm; edited 1 time in total
ezflyr



Joined: 25 Oct 2010
Posts: 1019
Location: Tewksbury, MA

View user's profile Send private message

PostPosted: Sun Dec 23, 2012 2:54 pm     Reply with quote

Hi,

It's a trivial modification to the CDC USB example that CCS provides in the
\Examples folder. Have a look, and see what you come up with....

John
benni



Joined: 28 Jun 2012
Posts: 28

View user's profile Send private message

PostPosted: Sun Dec 23, 2012 4:13 pm     Reply with quote

Hello,

I've Updated the topic, please recheck it.

Regards Benni
asmallri



Joined: 12 Aug 2004
Posts: 1634
Location: Perth, Australia

View user's profile Send private message Send e-mail Visit poster's website

PostPosted: Sun Dec 23, 2012 5:57 pm     Reply with quote

Is this meant to be a quiz? Are you asking us to guess what output you received from the PIC?
_________________
Regards, Andrew

http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!!
benni



Joined: 28 Jun 2012
Posts: 28

View user's profile Send private message

PostPosted: Mon Dec 24, 2012 3:08 am     Reply with quote

No, i just want to know if it should work.
ezflyr



Joined: 25 Oct 2010
Posts: 1019
Location: Tewksbury, MA

View user's profile Send private message

PostPosted: Mon Dec 24, 2012 6:14 am     Reply with quote

Benni,

The point is that posting random snippets of code like you did here, and with
your recent LCD thread, and then asking "will this work?" is a really poor way
to learn programming, and is not the way the forum is supposed
to work. Determining if code will work is YOUR job - you need to compile it,
load it onto your PIC, and actually test it and debug it yourself! We are here
to help you after you do all that, and still have a problem! If you aren't
willing to do it this way, you are never going to learn any worthwhile
programming and troubleshooting techniques, and the people here that might
help you will tire of your questions and start to ignore you!

Good Luck!

John
temtronic



Joined: 01 Jul 2010
Posts: 9162
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Mon Dec 24, 2012 6:52 am     Reply with quote

comments...
as for the 4550 code..it 'should' work, though only once.you don't have a 'turn off LED 'command...

as for the c# code..I don't use it.Too darn top heavy for 100% of the PC code I cut.

overall..the best teacher is a breadboard,PIC and parts, I KNOW the CCS CDC 4550 works,as i did your 'project' 2-3 years ago.you have to start small(get their program running), then slowly expand to include your desired 'functions'.

to test PIC<->PC serial communications, use Hyperterminal,RealTerm or something similar unless you KNOW your C# code runs flawlessly!

be sure to keep incremental backups.start with a small program.make a change but save as a new version,test,repeat this proceedure until the project is completed.Don't worry about having several(30,40,50+) 'versions' on your PC.when done, simple delete all but the last 4 versions.never change orginal source code for drivers or CCS examples only modify COPIES !

hth
jay
ezflyr



Joined: 25 Oct 2010
Posts: 1019
Location: Tewksbury, MA

View user's profile Send private message

PostPosted: Mon Dec 24, 2012 7:40 am     Reply with quote

Hi Jay,

He should be using something simple like Hyperterminal or Realterm to send
data to his PIC. Something like 'A' to turn the LED On and 'B' to turn the LED
Off. Once that is working, sure try something more advanced, but take it in
an incremental fashion.... The point is that he'll learn far more by "doing",
than he will by "asking"....

The ironic part of this is that the entire thing could have been done in the
time it took to create the thread, and ask the question!

John
benni



Joined: 28 Jun 2012
Posts: 28

View user's profile Send private message

PostPosted: Tue Dec 25, 2012 9:40 am     Reply with quote

Hey,

I just wanted to be sure that it will work. Nothing else.
I just need to wire it right and to test it.

The other thing is how to make the driver or is there a general driver for it?

Regards Benni
temtronic



Joined: 01 Jul 2010
Posts: 9162
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Tue Dec 25, 2012 2:03 pm     Reply with quote

Benni

You've got to get a breadboard out! No amount of typing on a PC will give you the hands on experience of real world testing (aka R&D).

CCS supplies the drivers for both PIC and PC in the examples folder and I know they work, well did, 2 years ago.Use their CDC example...get it up and running, then copy and make the easy modifications to the COPY, compiler and see what happens.
From what I recall the USB drivers for the PIC use up about 1/3 of the PIC4550 codespace. Something to consider once you get into serious programming....I now use $3 TTL-USB adapters for several reasons.

hth
jay
benni



Joined: 28 Jun 2012
Posts: 28

View user's profile Send private message

PostPosted: Tue Dec 25, 2012 3:40 pm     Reply with quote

I've ordered the parts to do this. I think that i will get it work because i googled and found some interestings things. When it work i will post screenshots here.


Regards Benni
benni



Joined: 28 Jun 2012
Posts: 28

View user's profile Send private message

PostPosted: Thu Dec 27, 2012 8:47 am     Reply with quote

Hey,

Will it also work without defining the USB_CON_SENSE_PIN ?

I just saw that usb_attached is just a definition for input of the USB_CON_SENSE_PIN pin.

Normally it should be attached when it gets current, because the current is from the PC. So why is there a definition for it?

Regards Benni
Ttelmah



Joined: 11 Mar 2010
Posts: 19328

View user's profile Send private message

PostPosted: Fri Dec 28, 2012 3:08 am     Reply with quote

Remember USB devices can be powered from their own supplies, _or_ from the PC.

The USB spec, _requires_ that a device attached to a bus that is not supplying power, disables it's transceivers. Hence you use the connection sense pin, and the code can then do this. If you are running powered from the USB bus, then this is not needed, and you can disable this option.

Quite a few people (incorrectly) run without using this pin, with a device that has it's own power. Some 'get away' with this, while others have problems (depends on the exact details of the chipset in the PC, any hubs in the bus, etc. etc...

Best Wishes
benni



Joined: 28 Jun 2012
Posts: 28

View user's profile Send private message

PostPosted: Sat Dec 29, 2012 4:04 pm     Reply with quote

Ok, I got it successfully working.
-Receiving and sending data bytes.

Picture:



Thanks everyone for help.

Regards Benni


Last edited by benni on Sat Dec 29, 2012 6:50 pm; edited 1 time in total
ezflyr



Joined: 25 Oct 2010
Posts: 1019
Location: Tewksbury, MA

View user's profile Send private message

PostPosted: Sat Dec 29, 2012 4:25 pm     Reply with quote

Hi Benni,

You received useful help and advice from the forum, right? Then why not post your code, and help the next person that has a similar question?

John
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
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