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

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

Отправлено Alavi 17 июля 2003 г. 16:57
В ответ на: Поправка отправлено Alavi 17 июля 2003 г. 13:17

Три варианта ISR получается:
1). C автоматическим сохраненимем status
2). Нет автоматического сохранения, но исполбзуем незанятые
уровни стека статуса
3). Сохраняем статус вручную
И вот как это будет:
//------------------------------------------ [1]
isr1: bit set mode1 IRPTEN;
...
rti;
//------------------------------------------ [2]
isr2: push sts;
bit set mode1 IRPTEN;
...
pop sts;
rti;
//------------------------------------------ [3]
isr3: dm(isr3_mode1)=mode1;
bit set mode1 IRPTEN;
dm(isr3_astst)=astat;
...
astat=dm(isr3_astat);
mode1=dm(isr3_mode1);
rti;
//------------------------------------------
В третьем варианте нужно сохранять и восстанавливать mode1 обязательно именно потому, что можно влететь в обработчик прерывания со сброшенным IRPTEN, значит и выйти из него нужно тоже со сброшенным: ведь раз его сбросили вручную - эначит это было нужно!
Разумеется в точке где его сбрасывали нужен 1 nop от команды сброса до начала защищаемого от участка (latency). Вроде нигде не соврал?

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru