AVR. Учебный Курс. Архитектура Программ
Все учебные курсы по микроконтроллерам которые я встречал (в том числе,
к сожалению, и мой ассемблерный, но я надеюсь это постепенно поправить)
страдают одной и той же проблемой.
В курсе бросаются строить дом не заложив фундамент. Только показав на
примере как мигнуть светодиодом, сразу же кидаются в периферию.
Начинают осваивать ШИМ-ы, таймеры, подключать дисплеи и всякие
термодатчики.
С одной стороны это понятно — хочется действа и результата мгновенно. С
другой — рано или поздно такой подход упрется в тот факт, что программа,
надстраиваемая без четкой идеологии, просто обрушится под своей
сложностью. Сделав невозможным дальнейшее развитие.
Итогом становится либо рождение жутких программных уродцев, либо
миллионы вопросов на форуме вида “а как бы мне все сделать одновременно,
а то частоты контроллера уже на все не хватает”.
Самое интересное, что правильной организации программы учат
программистов в ВУЗах, но вот только к микроконтроллеру народ обычно
идет не от программирования, а от железа. А, как показала практика
обучения в ВУЗе, электронщиков толковому программингу практически не
обучают :( Приходится все додумывать самостоятельно.
Итак, что такое структура программы. Это, прежде всего, ее скелет. То
какими путями движется код. Как организованы переходы между задачами
прошивки. То как распределяется процессорное время. Без краткого ликбеза
по общим принципам построения прошивки дальше двигаться нет смысла.
Все ниже написанное это лишь продукт моих умозаключений, поэтому
терминология может отличаться от общепринятой. Если это сильно кому то
будет резать глаз — поправляйте в комментах.