|
|
View previous topic :: View next topic |
Author |
Message |
nerdnicky
Joined: 02 Aug 2013 Posts: 13
|
how to master programming of pic microcontrollers |
Posted: Tue Sep 24, 2013 11:45 am |
|
|
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: 1909
|
|
Posted: Tue Sep 24, 2013 12:07 pm |
|
|
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: 9241 Location: Greensville,Ontario
|
|
Posted: Tue Sep 24, 2013 12:35 pm |
|
|
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
|
|
Posted: Tue Sep 24, 2013 1:59 pm |
|
|
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
|
|
Posted: Tue Sep 24, 2013 7:49 pm |
|
|
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 |
|
|
|
|
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
|