Прерывания должны быть написаны на ассемблере, чтобы правильно сформировать кадр стека.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
Alexandr
12 марта 2003 г. 17:16
В ответ на:
Не пойму я - порт uCOS2 для MSP430, что на серваке ucos'а выложен несовместим с версией 2.61? Вставил обработку прерываний, если вызываешь OSIntEnter(); ....... OSIntExit(); то прога через некоторое N-ное число (порядка 20...100) подвисает в эмуляторе видно что циклится код в Os_cpu_a.s43... может я что-то не так делаю? схема сырца внутри...
отправлено SOIC 12 марта 2003 г. 17:07
Составить ответ
|||
Конференция
|||
Архив
Ответы
Ответ: я тоже подумал - может на асме попробовать переписать, но с другой стороны какая разница на си или на асме - что от этого меняется? Что ты подразумеваешь под словами "правильно сформировать кадр стека"? Мне кажется микрокосу все равно что лежит в стеке, а компиллер по слову interrupt сам сохраняет регистры (хотя не все - в данном случае только R10, R12, R13, R14, R15) - как это может влиять на работу микрокоса?
—
SOIC
(12.03.2003 17:38,
пустое
)
Переключение производиться функциями OSCtxSw и OSIntCtxSw в Os_cpu_a.s43
—
Alexandr
(12.03.2003 18:38, 121 байт)
Ответ: кстати если убрать OSIntEnter(); и OSIntExit(); то все работает без зависаний... (правда время реакции больше, т.к. некому переключить задачу при выходе из прерывания)
—
SOIC
(12.03.2003 17:44,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru