Hi all
I have been programming for the arduino for some time now and i'm getting reasonably good at it, but how should I go about
moving on to AVR MCUs? I also already know how to make PCBs for thru hole and SMD, so mounting isnt an option.
__
What should i buy?
Can i get away with using the arduino as an isp?
What software? --> 64 bit windows 7
_
thanks
OK, you can make PCBs. In that case let me suggest this: Come up with a reasonably simple small project where you can put the features of a microcontroller into use. A combined egg timer / oven thermometer or something equally silly but something where you need to exercise the integrated peripherals of the chip.
The ATMega328 in an Arduino is a good candidate for a practice MCU. They come in 32 pin QFPs that are reasonably easy to solder even manually with an iron (i do that all the time).
One thing you need to make clear to yourself early on: how are you going to program the chip and how are you going to debug the code you are going to write. In Arduino the programming has been taken care of, so you didn't need to worry. Similar idea is possible in your own system but then you need to get familiar with bootloaders; how to set it up and how to communicate with one. Conceptually simpler is just to use Atmel's ready made tools as part of say AVR Studio 4-5 / Atmel Studio 6. That way you don't need a bootlöoader+accessories at all, but you do need a programmer device to move the program image to the target MCU. Also you need to implement the ISP signaling header on your PCB (piece of cake). Personally, i never bother with bootloaders because i have all the tools, but it may be significant if you want to do field upgrades. Then an Arduino style bootloading system gets you there with just a regular PC and a USB cable.
The Arduino I/O is the simplest possible - wires out from the MCU and straight into the headers. That is not how it is done in real life. Generally you need to consider input protection against surges, and signal integrity in the environment that the device is subjected to. Also you need to pay attention to pin assignment regarding primary and secondary functions available for each of them.
Once you have created your initial HW design, you should check that it will be programmable to function the way you wanted, and that you are clear how to transfer the program image and debug the solution (if you plan to do that, but i highly recommend it). Once there it is time to implement and let loose.
A final word about debugging: Arduino doesn't have it. The Atmel chip inside sure does, but Arduino does not implement it due to lack of necessary hardware. The 328 and many other Atmel chips implement a system called debugWire, where the reset signal pin is used to communicate debugging info across. For that to work, you need PC hardware to support the protocol. I haven't studied the alternatives, personally i use Atmel's JTAGICE 2 and 3 devices but they have their price. There may be other, 3rd party options but you will have to find out. AVRFreaks forum, as stated, is the go-to place.