I've been working with the Arduino platform for a while now and would like to try out working with other 8 bit AVRs. I picked up an AVR Dragon with some header pins, a ZIF socket, and jumper wires. Now I'm just not entirely sure where to start as far as programming AVRs. I've found several tutorials on how to us the Dragon, AVR Studio, and AVR-GCC, but nothing on just how AVR C programming works. Some tutorials on C programming works for AVRs (basically explanations for how variables, functions, etc work for AVR C) would really help. Looking through random code examples doesn't exactly help if there isn't much explanation as to what things are and how everything works. Any references would be greatly appreciated.
Have you seen this site? www.avrfreaks.net
It has been helpful as I move beyond the Arduino environment and some of the very helpful shortcuts it provides in using the different functions of the MCU like pwm, interrupts and simple timer functions.
Also, read the datasheet for the processor you are playing with. You will want to start manipulating and reading registers directly so knowledge of binary opererators, i.e. bit-shifts and masks, will be useful.
Arduino is wonderful in how well it can hide some of the gory details from you and just lets you get projects done but it sounds like you want to see what behind the curtain so to speak, which is also a lot of fun.
Ultimately, you're reference is going to be the datasheet for the MCU and general C programming knowledge.
Download the MCU, get some examples from the AVRfreaks.net that deals with configurations and etc... and see what each of the configuration commands do to the internal hardware of the AVR.
It's not easy, but if you start with one peripheral at a time, tihngs will get easier.