Суть не в том, что это были глобальные переменные, суть в том, что их изменение в низкоприоритетном процессе запускало какую-то деятельность в более приоритетном процессе. Ведь запускало же? Например, флаг
enable_move - он зачем? А scmRTOS устроена так, что пока более приоритетный процесс не отдаст управление (при помощи
Sleep() или, скажем,
TEventFlag::Wait() ), менее приоритетный процесс не имеет шансов на выполнение. Оттого и сбрасывается собака.
Стеки задач задаются в специализации шаблона процесса:
Код
typedef OS::process<OS::pr1, 200> TProc1;
здесь 200 - размер стека процесса TProc1.
Если бы я знал, что такое электричество...