реклама на сайте
подробности

 
 
> Проблема с обработчиком прерывания в uCOS-II., При посылке *Post() из ISR ОС виснет.
JeDay
сообщение Oct 24 2005, 12:28
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 276
Регистрация: 22-09-05
Из: Kiev
Пользователь №: 8 818



В мануале написало что перед обработчиком прерывания надо:
1. сохранить регистры;
2. OSIntEnter();
3. ОБРАБОТЧИК ПРЕРЫВАНИЯ;
4. OSIntExit();
5. восстановить регистры.

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

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

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

Зараннее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_artem_
сообщение Nov 7 2005, 18:48
Сообщение #2


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



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)...


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 19:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016