Estoy de acuerdo con Joby - Arduino es grande, pero siempre me siento sofocado por el marco que me rodean. Me gustaría pasar a utilizar la recta C en tu Arduino y construir una gran cantidad de la funcionalidad de la biblioteca que siempre desde cero. Generalmente prefiero profundidad antes de amplitud - no acaba de empezar en otro microcontrolador de la familia mediante el uso de más marcos. Aprender un poco más acerca de cómo implementar algunas de estas funciones.
Comience con un programa de trabajo y reemplazar el Arduino llamadas a la biblioteca con sus propias versiones de una función en un momento. Usted va a aprender mucho acerca de los registros de control, temporización de bits operaciones, etc si usted havent' ya. Leer el ATMega328 la hoja de datos en profundidad todo lo que necesitas está allí.
Pruebe con otro IDE como AVR Studio o Code::Blocks. Aprender el GCC toolchain. Intente más avanzadas técnicas de codificación - pruebas unitarias, de cobertura, de perfiles, de pelusa/férula de cheques. Poner un RTOS en el Arduino.
Un combinado programador/controlador no es un signo de debilidad - es sólo una opción de diseño. El único 'debilidad' que podría provenir de la falta de en el circuito de depuración. Comprar un AVR Dragon y tendrás que lamido por $50.