Самый известный совет во встроенном программировании - "держать прерывания короткими".
Теперь моя ситуация в том, что у меня очень длинная работа в моем цикле main() (запись больших блоков данных на SDcard), которые иногда могут принимать 100 мс. Поэтому, чтобы поддерживать мою систему в ответе, я переместил все остальные вещи в обработчики прерываний.
Например, как правило, обрабатывать входящие данные UART в прерывании, а затем обрабатывать входящую команду в цикле main(), а затем отправлять обратно ответ. Но в моем случае вся обработка/обработка команд также занимает места в прерываниях, потому что мой цикл main() может быть заблокирован для (относительно) длительных периодов.
Оптимальным решением было бы перейти на RTOS, но у меня нет ОЗУ для него. Существуют ли альтернативы для моего дизайна, где прерывания могут быть короткими?