Лично для меня изучение контроллеров начиналось с "ОЧЕНЬ ВЫСОКОГО" языка програмирования, такого как С++ для ARDUINO. :)
Постпенно при работе с этим языком начинаешь понимать всю ограниченность своих знаний, в процессе усложнения Ваших запросов к конкретному микроконтроллеру. И тут наступает такой момент, когда выше бежать уже некуда, а поставленная задача требует решения. Что тут тогда остаётся делать???
Ответ тут только один. Спускаться сразу в подвал и изучать механизм работы вашего контроллера.
В этом вам поможет ни всякие конструкторы вроде VB и т.п. а наш старый добрый "голый ASM".
Вооружившсь парой-тройкой рускоязычных книжек по програмированию AVR на ASM, AVRstudio, терпением, усидчивостью и большим количеством времени я не сомневаюсь Вы достигните успеха! ИМХО! :)