Тут может есть смысл немного уточнить - начинать лучше с простых задач, с таких, которые можно решить за разумное время и увидеть результат, что очень важно. И тут получается, что цепочка из повторений чужого сишного кода со своими модификациями позволяет быстро освоить инструмент, задействование разной периферии контроллера требует изучения ее описания, но после освоения инструмента проблемой не является, можно пройтись в отладчике по тем местам, где что-то ведет себя не так, как задумано. Гораздо больше усилий требуется при попытке затолкать свой проект в какой-нибудь FreeRTOS, тут надо понимать эту среду и учитывать в архитектуре. Но вот ассемблер как таковой возникает больше при необходимости какой-то оптимизации, которая не под силу компилятору. Когда Константин Иванов выложил ассемблерные исходники синтезатора на Атмеге 8, я решил попробовать скомпилировать подобный функционал на Си, никогда ранее с gcc для этого чипа дела не имея. И я был приятно поражен генерируемым кодом. Из ассемблера понадобилось только небольшое число строк в сопрограммном переключателе задач, который был корнями из 8080/8085 и легко перенесся на Атмегу, где-то тут это все выкладывалось. Ассемблер безусловно важен и (часто бывает что) нужен, но вот начинать с него в наше время IMHO большого смысла нет