How Can I Learn Microcontroller/Device Programming ASAP?
I have an opportunity to work on a really cool project as a CS contributor, with microcontroller and device programming. The project basically entails creating a device to read input x, logically perform action y, and interface through RFIC components (sorry, being intentionally vague here).
Anyway, I have a decent amount of programming experience over the past 8 years, but essentially 0 microcontroller or device programming experience. I've played around with the Arduino for some basic applications, but what's the fastest way to learn microcontroller programming techniques? Any free textbook/pdf recommendations would be great.
I have 3-4 weeks before I'm really diving into the project, so I'm starting from the ground up and learning basic electrical engineering. Any suggestions or tips would be terrific!
5 comments
[ 0.18 ms ] story [ 22.5 ms ] threadElec Eng turned Software Eng here, so I have some background in both fields. I'm going to make a couple of assumptions as to what you're using, but the comments should be reasonably generic. My $0.02:
1] Get yourself a 'decent' development kit for the micro platform you'll be working on. You don't specify manufacturer or type, but look for something that comes with all the cables, LEDs, drivers and other goodies, and a board that 'just works'. If you have limited background, you don't want to spend your time trying to get basic comms or drivers working, or figuring out that your LED isn't turning on because of a wrong or missing pulldown resistor.
2] In tandem with [1], try and find a well documented compiler toolchain. Gone are the days when the good toolchains cost several grand - GNU can crosscompile for quite a number of platforms, and plugs into IDEs like eclipse nicely. All this is reasonably well documented too. If this venture is being sponsored, have a look at reviews for paid-for software.
3] Learn how to use debuggers in embedded environments. This is a very wide topic, and depends on the debugger, what type of debugging the hardware supports, etc. If you haven't picked your platform yet, make this a large part of your decision process - if you're new to an environment, you'll need all the help you can get. Especially since it looks like you'll be doing communications heavy development, a good debugging and tracing infrastructure will help, unless you have access to logic analyzers.
4] Start with basic development on your board, just to get the hang of it and the toolchain. The development kit version of a 'hello world' program is a flashing LED. This will show you how to setup the micro, communicate with external devices, use timers, etc. Next look at serial communications, and then start looking at communication with more complex external devices using whatever bus they support, etc.
If you're willing to give more information on devices and requirements (or even design choices already made), I might be able to give more info.
4 weeks is a tight deadline if you have little to no experience, but having said that, modern development setups are substantially more forgiving to the newbie than 5-10 years ago.
It really all depends on what you will be working on.
Also look into what brand microcontroller you will be working on. The Atmel side is a bit different from the PIC in terms of tools and learning curve.
Also, is it an ARM focused position? Then you might look into something like the mini2440 board. It is affordable and has good support. The andahammer.com people have some good data on it.
You can contact me if yo like. I do embedded. email on profile.