Jump to content

    

Переполняется очередь сообщений

На XMEGA128 использую очередь сообщений. В общем работает хорошо, но при большой нагрузке (много данных по УАРТам) переполняется очередь сообщений для задачи. Прерывания все при этом работают. Сообщения для других задач иногда отсылаются, иногда нет. Пробовал при переполнении вызывать OSQFlush - эффекта нет. Как быть?

П.С. памяти данных использую 7600 байт из 8КБ. Может что-то из-за этого?

Share this post


Link to post
Share on other sites

Выяснил, что переполнение происходит из-за того, что в какой-то момент перестает вызываться задача, которая должна эту очередь читать. Всего задач у меня 8, пробовал уменьшать до 3-х задач и 5 КБ памяти данных, изменял размеры стеков, приоритеты задач - не помогает.

Share this post


Link to post
Share on other sites

Может на семафорах переписать? Ну и стека добавить, если есть зависимость от времени.

Share this post


Link to post
Share on other sites

Я хочу попробовать удалять и заново создавать зависшую задачу, а там посмотрим...

Share this post


Link to post
Share on other sites

Сработало!!! :08: Когда переполняется очередь, я из самой приоритетной задачи (она работает нормально) удаляю зависшую задачу, чищу очередь сообщений и запускаю задачу заново.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this