Я погоджуюся з Джобі - Ардуїно - це чудово, але я завжди відчуваю задуху в рамках, якою вони мене оточують. Я б перейшов до використання прямого C на своєму Arduino і створив багато функціональних можливостей бібліотеки, які вони надавали з нуля. Я, як правило, віддаю перевагу глибині до ширини - не запускайте лише в іншій родині мікроконтролерів, використовуючи більш надані рамки. Дізнайтеся трохи більше про те, як самостійно реалізувати деякі з цих функцій.
Почніть з робочої програми та замініть виклики бібліотеки Arduino власними версіями однією функцією. Ви дізнаєтесь багато про регістри управління, терміни, бітові операції тощо, якщо у вас вже цього немає. Читайте таблицю даних ATMega328 глибоко - все, що вам потрібно, є там.
Спробуйте інший IDE, наприклад AVR Studio або Code :: Blocks. Вивчіть ланцюжок інструментів GCC. Спробуйте більш вдосконалені методи кодування - тестові одиниці, покриття, профілювання, перевірка ворсинок / шини. Покладіть RTOS на Arduino.
Комбінований програміст / контролер не є ознакою слабкості - це лише вибір дизайну. Єдина «слабкість», яка може бути наслідком цього, - це відсутність налагодження в ланцюзі. Купіть AVR Dragon, і вам доведеться це облизати за 50 доларів.