[an error occurred while processing this directive]
[an error occurred while processing this directive]
Ещё о прерываниях TMS320C20x. Глюк(?)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Отправлено
Артём 14 августа 2001 г. 15:13
|
|
|
|
Возможно, рано кричать об обнаруженном глюке, но программируя одну задачу, столкнулся с проблемой: нужно было в процедуре запрещать прерывания, а затем - восстанавливать исходное состояние, т.е. что-то типа такого:
push state
disable interrupts
do something
...
pop flags
Подобная функция вызывается и из-под обработчиков прерываний, и в фоновых процедурах, посему прерывания нужно возвращать в исходное состояние.
В документации на TMS320C20x написано:
The LST instruction can be used for restoring the status registers after subroutine calls and interrupts,
хотя про сам бит разрешения прерываний написано:
INTM is unaffected by the LST (load status register) instruction.
Попробовал было сохранить статус в стеке, а затем проверить соответствующий бит, но тот всегда читается как 1 - как следствие, прерывания запрещаются.
Что делать?
Составить ответ
|||
Конференция
|||
Архив
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru