[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: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru