

How Can I Learn Microcontroller/Device Programming ASAP? - got2surf

Hey guys,<p>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).<p>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.<p>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!
======
tonteldoos
Greetings,

Elec 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.

~~~
got2surf
Thanks for the advice! I'll start downloading and playing around with the
software - I'll start with Hello World and keep going up from there. I may end
up PMing you later on with more specific questions if that's ok. Thanks again!

------
orangethirty
The arduino is pretty good due to the amount of resources available. If you
want to learn the hardware side if things, then a beginners bundle from
Adafruit might be good. You can also buy a bunch of sensors from one of the
major web stores.

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.

------
zafka
If you get to choose, order a Microchip PIC dev kit with the closest
functionality to what you want. YOU can then start with their canned code and
morph it into your product. If you have an extra couple of grand and a spare
week, there is the annual MIcrochip Masters in Phoenix coming up in August.
They give tutorials on their tool chains, and various applications. Feel free
to email me with any questions. Regards, Jim

~~~
got2surf
Unfortunately I'm a college pre-freshman without a couple grand free :P but
I'll look into the Microchip PIC, thanks!

