[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Дима_П 01 августа 2003 г. 17:51
В ответ на: Adsp-2185. Изменение IMASK в теле обработчика прерывания. отправлено Навзничь 01 августа 2003 г. 17:01

Точно то, о чем Вы спрашиваете, можно сделать так:

т.к. при входе в прерывание IMASK/MSTAT/ASTAT сохраняются в статусном стеке, есть только один выход - выгрузить значения из стека/модифицировать/загрузить назад:

.....
pop sts;
imask = NEW_MASK;
push sts;
....

между pop и push НЕЛЬЗЯ использовать что-то, модифицирующее ASTAТ и MSTAT (например арифметические инструкции). Кроме того, перегрузка MSTAT может вызвать переключение банка регистров - т.е. "дублированные" регистры использовать нельзя.

Резюме: то, о чем Вы спрашиваете, сделать возможно, но крайне нежелательно (и, по крайней мере требует хорошего понимания происходящего). IMHO надо задуматься над алгоритмом - гораздо проще управлять прерыванием ВНЕ прерывания - как правило можно обойтись без "экзотики" :-)

Есть еще и другой метод управления прерыванием - он использован в примере от AD ("Engineer To Engineer Note EE-51") - можно не запрещать прерывание, а просто заменить jump в таблице прерываний на rti или jump на другой обработчик прерывания:

.....
rti; nop; nop; nop;
interrupt_address: jump interrupt; nop; nop; nop;
rti; nop; nop; nop;
.....
rti_command: rti;
.....
interrupt1: jump interrupt 1;
.....
i4 = interrupt_address;
i5 = rti_command;
m4 = 0;
ar = pm(i5,m4);
pm(i4,m4) = ar; //переключение на "пустой" обработчик
......
i4 = interrupt_address;
i5 = interrupt1;
m4 = 0;
ar = pm(i5,m4);
pm(i4,m4) = ar; //переключение на альтернативный обработчик
.....
нужно отметить неявное использование PX в это примере, т.к. длина слова программной памяти 24 бита

Почитать можно "ADSP-218x DSP HW Ref", p 3-20 и "ADSP-218x Instruction Set Ref" p. 4-155

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

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

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

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


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

E-mail: info@telesys.ru