I'm about to buy a Freeduino SB to learn more about embedded programming; I'm in mech eng, so I don't really get much exposure to circuits or microchips outside of class. It uses an ATmega328 which I'd love to use for my own custom applications like motor encoder feedback loops and speed differentials for tank steering.
From what I've read and heard, Arduino has its own IDE and programming language that rides upon another layer of abstraction below it. This intermediate layer translates Arduino code into something the microcontroller understands (whether it be to C or directly to bytecode, can't remember).
Is it possible to bypass that entirely and take full advantage of the 328's capabilities by writing in C? I really like how the board is plug-n-play, but eventually I will want to move on from the Arduino language. In terms of programming experience, I've done a little C++ and looked at some bits of C code that my friend writes from time to time. I'll need to be using C later on when I get a job, too.
This is in part a learning experiment and part a way for me to bring some skills to my university's robotics club, as I'm thinking of starting a project team for an autonomous rover racing competition next year that we're hosting.