vitek101
Mar 25 2010, 07:55
На XMEGA128 использую очередь сообщений. В общем работает хорошо, но при большой нагрузке (много данных по УАРТам) переполняется очередь сообщений для задачи. Прерывания все при этом работают. Сообщения для других задач иногда отсылаются, иногда нет. Пробовал при переполнении вызывать OSQFlush - эффекта нет. Как быть?
П.С. памяти данных использую 7600 байт из 8КБ. Может что-то из-за этого?
vitek101
Mar 25 2010, 15:07
Выяснил, что переполнение происходит из-за того, что в какой-то момент перестает вызываться задача, которая должна эту очередь читать. Всего задач у меня 8, пробовал уменьшать до 3-х задач и 5 КБ памяти данных, изменял размеры стеков, приоритеты задач - не помогает.
andrewlekar
Mar 29 2010, 11:49
Может на семафорах переписать? Ну и стека добавить, если есть зависимость от времени.
vitek101
Mar 30 2010, 07:00
Я хочу попробовать удалять и заново создавать зависшую задачу, а там посмотрим...
vitek101
Mar 31 2010, 07:02
Сработало!!!

Когда переполняется очередь, я из самой приоритетной задачи (она работает нормально) удаляю зависшую задачу, чищу очередь сообщений и запускаю задачу заново.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.