Я согласен с Джоби - Ардуино великолепен, но я всегда чувствую себя подавленным рамками, которые меня окружают. Я бы перешел к использованию прямого C на вашем Arduino и построил бы большую функциональность библиотеки, которую они предоставили с нуля. Я обычно предпочитаю глубину перед широтой - не просто начните с другого семейства микроконтроллеров, используя более предоставленные фреймворки. Узнайте больше о том, как реализовать некоторые из этих функций самостоятельно.
Начните с работающей программы и замените вызовы библиотеки Arduino вашими версиями по одной функции за раз. Вы узнаете много нового о регистрах управления, времени, битовых операциях и т. Д., Если вы еще этого не сделали. Внимательно прочитайте таблицу данных ATMega328 - там есть все, что вам нужно.
Попробуйте другую IDE, например AVR Studio или Code :: Blocks. Изучите GCC toolchain. Попробуйте более продвинутые методы кодирования - модульные тесты, покрытие, профилирование, проверка ворса / шины. Поставьте ОСРВ на Arduino.
Комбинированный программист / контроллер не является признаком слабости - это просто выбор дизайна. Единственная слабость, которая может возникнуть из-за этого, - отсутствие внутрисхемной отладки. Купите дракона AVR, и вы получите его за 50 долларов.