"Почему такое нормально работать не может" -Опиши подробней? И не работало действительно по факту? В роли
тебя мог выступать и я. Доебаться я мог (и сделал бы) только потому
что лично мне это не нравится, потому что это написано не мной (NIH, Not invented here - антипаттерн), потому что я и в самом деле даже саму структуру
системы строю иначе.
Вы обсуждали конкретную установку, писать вот так-то и так-то? Было такое? Думаю было "пиши", вот и написал вообще-то говоря самым правильным с точки зрения высокоуровневых ваятелей способом, сэкономил время и взял родные библиотеки, то что уже написано и отлажено.
Вопросом что происходит в конкретную наносекунду в его системе можно удивить любого на этом форуме и он не ответит.
Система должна быть hard realtime или soft realtime? А это обсуждалось?
Я может что-то не понял, но для ШИМ'а скажем мотора или преобразователя нужно чтобы он обрабатывал аварийную ситуацию, выставлял процентовку заполнения и включался/выключался.
Он программист, он действительно особо не знает, с осциллографом не сидел. Поэтому помягче и поспокойней (имхо) надо. Пусть внатуре, посидит с осциллографом.
Доработать "темные" моменты и вместе проработать то что неизвестно. Может быть сменить стратегию и наконец-то обсудить что система должна быть hard realtime и время переключения тасков в 1ms (типично у FreeRTOS) слишком расслабленное требование...
Это все относится к архитектуре.
Я вначале думал совсем про другое. Обычно делаю "фе" от других вещей. Но описывать это всё значит превратить пост в стену текста.
Хуевое именование типов, переменных и функций в стиле транслита или рунглиша. Или еще хуже, однобуквенными a,b,x,i... Или только автору понятными фекалиями: gzHRN_blx, OM4_BN_OFF, итд... Выписание "стен кода" в виде функций за сотню строк.
Отсутствие какой-либо структуры и каких-либо внутренних самосоглашений (внутренних блоков софта).
Построение циклов на do.. while вместо гвоздями прибитого for. И так далее. Отсутствие форматирования...
Признаков говнокода или "пованивания" тысячи...