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 CCS Technical Support

how to master programming of pic microcontrollers

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
nerdnicky



Joined: 02 Aug 2013
Posts: 13

View user's profile Send private message

how to master programming of pic microcontrollers
PostPosted: Tue Sep 24, 2013 11:45 am     Reply with quote

Guys, i am about to get my electrical and electronics engineering graduate degree in 2014. I am very eager to work in the embedded system industry but i am not able to get sufficient help in programming. I am thorough with the basic concepts but the complex ones are not striking my head. Please guide me how to mature the programming skills so that i could land into a good company.
newguy



Joined: 24 Jun 2004
Posts: 1907

View user's profile Send private message

PostPosted: Tue Sep 24, 2013 12:07 pm     Reply with quote

You're not going to like the answer, but the secret is to practice practice practice. You only get good by doing many different projects. There is no practical way to learn this stuff from a book.

Start small. Try to make a programmable counter that you could use for timing how long your food is in the oven. Try making a simple thermostat. Make a simple circuit that detects motion (or heat) in a room and turns on a light. For a step up in complexity, try making a universal infra-red remote control unit that will interact with all the consumer electronics you own (stereo, tv, etc).

Start doing stuff like this and pretty soon it's all going to seem like second nature.
temtronic



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

View user's profile Send private message

PostPosted: Tue Sep 24, 2013 12:35 pm     Reply with quote

also...

choose a PIC like the 18F46K22, in a 40 pin DIP version.

Yes, 'overkill' for 99% of normal projects, but with tons of memory, 2 UARTS, timers, I2C,SPI, etc. it's kind of a 'swiss army knife' of PICs.
By standardizing on one PIC type, you'll have common PCB layouts and you'll develop your own library of WORKING code and drivers.

I know, others like the 'buy the smallest PIC, fewest pins' approach but it's easier and faster to make products my way. Having a common set of known working code saves a LOT of time( which is money!), something any future employer cares about.

As for software, start with the 'blinking LED, then the 'Hello World' and go from there. Nice thing about CCS is the HUGE number of working code examples AND a LOT of drivers they freely supply.

hth
jay
ckielstra



Joined: 18 Mar 2004
Posts: 3680
Location: The Netherlands

View user's profile Send private message

PostPosted: Tue Sep 24, 2013 1:59 pm     Reply with quote

You are about to get your electrical and electronics engineering degree. Then I guess you had some schooling in the art of programming? Do you have any idea of the knowledge that you think you are missing and that we can help you with?

I personally find it becoming more difficult these days to define 'embedded' as the difference between embedded systems and desktop systems is slowly fading. The price difference between a simple 8 bit PIC processor and a powerful 32-bit ARM processor with lots of memory is only a few dollars. With this tiny difference the time and money spent on writing software becomes the deciding factor in choosing a hardware platform. Now I often write software for embedded systems based on a Linux kernel with lots of memory, processing power and controlled through HTML web pages. Using an existing OS with proven software libraries saves me a lot of time.

Having an electronics background is a good basis for becoming an embedded software engineer. We don't know what your current knowledge level is but here are some techniques that pop up and you should know about:
- State machine
- Real time OS (what it can do and, more importantly, what it can't do).
- Interrupts
- Study a few communication buses (RS-232, RS-485, I2C, ethernet, USB). How do these work, what are strong and weak differences?
- Learn one assembly language. You will hardly ever use it but it still is the basis for all programming so it is good to know the possibilities and limitations.
- Lots of things I forgot.

The most fun to learn about all these is to do some actual projects. And don't stay with the PIC processors, try ARM architecture with and without Linux as well.

Also read a similar topic here: http://electronics.stackexchange.com/questions/3343/how-to-become-an-embedded-software-developer
gpsmikey



Joined: 16 Nov 2010
Posts: 588
Location: Kirkland, WA

View user's profile Send private message

PostPosted: Tue Sep 24, 2013 7:49 pm     Reply with quote

As others have said - practice. Get your hands dirty - build up some little projects that do something - temperature controller, servo controller for something, some sort of home control gadget. It always amazed me when I was out in the industry the number of people graduating with very high grade averages, but didn't know which end of a soldering iron to pick up. Maybe at the big system level you don't need that stuff, but if you are going to do embedded, you need to be able to put projects together and MUCH more important, you will need to have some experience in troubleshooting something that does not work as expected (or at all). Amazing how many people a) expect it to work the first time and b) haven't a clue where to start on how to troubleshoot and debug something when it doesn't work as expected.

mikey
_________________
mikey
-- you can't have too many gadgets or too much disk space !
old engineering saying: 1+1 = 3 for sufficiently large values of 1 or small values of 3
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
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