и еще в догонку вопрос:
есть флаг
Код
program_event.id_event = 0; tn_event_create(&program_event, TN_EVENT_ATTR_MULTI,_PE_FLAG_RUN_|_PE_ALLOW_LEDS_|_PE_ALLOW_TIME_);
сбрасываю в прерывании флаг через битовую маску:
Код
tn_event_iset(&program_event,(_PE_FLAG_MENU_REFRESH_|_PE_FLAG_RUN_|_PE_ALLOW_LEDS_));
где
Код
#define _PE_FLAG_RUN_ ( 1 << 0)
#define _PE_FLAG_MENU_REFRESH_ ( 1 << 2)
#define _PE_ALLOW_LEDS_ ( 1 << 4)
при пошаговом исполнении вижу что биты во флаге сбрасываются, но задачи, которые должны были бы остановиться - продолжают работать. Вернее останавливается только задача, ожидающая один флаг/бит (_PE_FLAG_MENU_REFRESH_).
Все бы ничего, но при варианте со сбросом отдельных битов во флаге:
Код
tn_event_iset(&program_event,_PE_FLAG_MENU_REFRESH_);
tn_event_iset(&program_event,_PE_FLAG_RUN_);
tn_event_iset(&program_event,_PE_ALLOW_LEDS_);
работает четко. Задачи "останавливаются" - а именно переходят в режим ожидания флага....
получается что TNKernel не реагирует на "групповую" сброску битов во флаге?