ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
828108 Топик полностью
Dingo (29.03.2018 13:40, просмотров: 165) ответил SciFi на Элементарно. Сделать арбитра. Задачи запрашивают доступ к периферии с указанием приоритета. Ну или приоритеты уже вбиты по номеру задачи.
Переосмыслил, упростил, получилось что-то такое : while( taskExist() != false ) { if ( Task0_Req != 0) { Task0_Req = 0; Task0(); continue; } if ( Task1_Req != 0) { Task1_Req = 0; Task1_(); continue; } if ( Task2_Req != 0) { Task2_Req = 0; Task2_(); continue; } // And so on // ......... } taskExist () { return ( Task0_Req | Task1_Req | Task2_Req); } Приоритет есть порядок задачи в исходнике. Всё. А запросы можно взводить откуда угодно: из другой задачи, из прерывания. Мой внутренний перфекционист недоволен только портянкой кода, а не обходом в цикле.