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