@nossudak
Радиоинженер

Как научиться изящно и грамотно программировать МК?

В интернете и книжках полно хороших уроков и примеров о том как решать с помощью микроконтроллера простые задачи, типа термометра и т.д. Но если стоит задача реализовать какой-то более менее сложный проект, где, например, задействованы несколько прерываний и есть взаимодействие с внешними устройствами, начинаются проблемы. Как написать этот код чтобы в нем черт не сломил ногу? Как написать его максимально быстро и с минимумов багов? В общем где и как можно научиться программировать МК на продвинутом уровне?
  • Вопрос задан
  • 1818 просмотров
Решения вопроса 1
@vasiliev
Посмотрите в сторону операционных систем реального времени, например freertos. При большом количестве задач, возлагаемых на микроконтроллер, без них сложно сделать что-то хорошо работающее и хорошо написанное.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Сначала моделировать структуру кода, продумать взаимодействие обособленных частей - "карандашом на бумажке" в виде блок-схем, независимых "виртуальных машин", и только после того, как будет понятна вся структура будущего устройства, начинать писать код. А дальше только практика; и есть код, написанный несколько месяцев назад, кажется ужасным, значит, вы на верном пути)
Главное - не торопиться сразу кодить.
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
Ну ровно так же как человек учится ходить: вначале фигово и падая на попу, потом - получше, но косолапя и уже только потом начинает бегать...

Тупо практика и еще раз практика, после набитых первых шишек - можно поглядеть в чужие реализации и там или увидеть аналогичные своим грабли, либо увидеть и оценить некий прием. Абстрактно заранее быстро, правильно и дешево - не получится...
Ответ написан
Комментировать
@LampTester
Я всегда говорю, что программирование контроллеров распадается на две задачи: собственно программирование и схемотехника. Потому сначала надо научиться программировать и освоить схемотехнику.

Научиться программировать можно выполняя классические задачи - на сортировки, на работу со структурами данных и т.п. Про это есть множество хороших и проверенных книжек и сайтов. Только не берите книжки типа "C++ за десять дней" - это совсем не то, что научит писать изящно и грамотно. На описываемом этапе вас будут интересовать основы, которые помогут научиться проводить разбиение сложной задачи на простые действия.

Естесственно, генераторы кода я даже не обсуждаю - про них надо просто забыть. Никакого C++, только ANSI C - упор на него.

Знание схемотехники необходимо, чтобы понимать особенности железа и способы правильного взаимодействия с ним. По основам схемотехники тоже есть много проверенных книг. Но, опять же, это не "Ардуино для начинающих". Берите нормальные книги вроде Горовица и Хилла.

Ну и практика, практика, практика. Ну и, конечно, не забывайте, что понимание терминов "изящно и грамотно" у каждого свое. :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы