Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с обработчиком прерывания в uCOS-II.
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы
JeDay
В мануале написало что перед обработчиком прерывания надо:
1. сохранить регистры;
2. OSIntEnter();
3. ОБРАБОТЧИК ПРЕРЫВАНИЯ;
4. OSIntExit();
5. восстановить регистры.

Я не проделываю пункты 1. и 5., все вроди работает. Пишу обработчики на Си. для пунктов 1. и 5. надо Асм городить(по другому вроди никак).
Как красиво написать обработчик по всем требуемым правилам ?

Проблема в том, что если я делаю OSSemPost(x), OSMboxPost(x) и т.д. то через 1-4 посылки ОС зависает. Это наверно из-за того что я не сохраняю текущий контекст потока...(?)

Пришлите плиз пример из правельным обработчиком прерывания
для ATmega128.

Зараннее спасибо.
JeDay
vetaljan@mail.ru
_artem_
A ti posmotri na AN dlya ATmega 128 - tam vse napisano.
Problema v tom chto esli vo vremya prerivaniya u tebya Post() funkciya vizivaetsya to mozet bit chto (OS preemptive) novaya zadaca (aktivizirovannaya izza etoy Post() funkcii) budet imet prioritet bolsiy chem prervannaya . Chtro ze polucitsya togda ? - OSIntExit() nikogda ne vozvratitsya i kontekst switch budet sdelan v ney s posleduyusey peregruzkoy registrov dlya novoy zadachi. A svoi registri to ty ne soxranil ( prervannoy zadachi)...
VitPushchin
Тут встает еще вопрос об используемой среде разработки и стиле написания обработчика прерывания. Пример: В IAR Embedded Workbench существует специальное слово __interrupt, с помощью которого можно сообщать системе об предназначении ДАННОЙ функции. В этом случае будет проведена запись нужных регистров.
Кроме того, на самом деле КОРРЕКТНО написанный портинг uC-OS II должен проводить запись и восстановление регистров при переключении задачи самостоятельно. Причем неважно, когда это переключение происходит - при обычной работе, или же во время обработки прерывания.
Кстати, на сайте присутствуют не только корректные портинги - как пример, года полтора назад я брал оттуда портинг для M16C, написанный Ляброссом. В итоге оказалось, что там очень много ошмибок и пришлось все это безобразие перелопачивать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.