[an error occurred while processing this directive]
Спасибо за совет! Удалось схватить "жучка"! Но что же с ним делать?
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

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

Отправлено Андрей О. 13 октября 2004 г. 20:48
В ответ на: 2000-й не юзал. Проведи эксперимент - прерви задачу, запиши какую-нть хрень в другую таблицу прерываний для этого же вектора (и вообще заполни и эту и другую таблицу чем-то), снова запусти и посмотри какое значение загрузится. Тогда поймешь откуда оно берётся. отправлено Тээмэсник 13 октября 2004 г. 10:56

Действительно, когда происходило прерывание, то в программный счетчик (PC)
грузился вектор не из той таблицы, которая определена битами VMAP=1 и
ENPIE=1 (ENPIE - это 0-бит в регистре PIECTRL(0х0000CE0)), а из таблицы,
которая соответствует комбинации битов VMAP=1 ENPIE=0.

И вообще, как выяснилось, от состояния бита ENPIE положение таблицы векторов
не зависит, а вектор в любом случае берется из таблицы по адресу
0x3FFFC0−0x3FFFFF (т.е. VMAP=1 ENPIE=0).

Как все это победить? Можно конечно продублировать таблицу векторов в обоих
адресных пространствах, но это как-то криво.

Надеюсь что это БАГ только симулятора, а в реальном процессоре все нормально.

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru