Не так. На моих atmega8 есть несколько таймеров, АЦП и UART. Причем
кроме UART, все задачи - в сетке единиц секунд. Можно конечно рассадить все по прерываниям, получить гонки сигналов,
межпроцессные синхронизации и редко возникающие ошибки.
А можно вааще не парится.
Один прогон всех задач с большим запасом укладывается в 50мс.
Нахрена процессы? - обычный биглуп, в котором вааще никаких синхронизаций не нужно.
Код становится неубиваемым.
И простым как детсадовская стенгазета.
Ну, ладно, из UART нужно байты выгребать все же в прерывании. На всякий случай.
Но разбор полученного и формирование ответа - в биглупе.
И чтение данных для отправки - без всех этих ваших семафоров или сигналов.
Вообще-то, где-то у классиков расписано насчет деления процессов на быстрые и медленные.
Есть в учебниках...