[an error occurred while processing this directive]
Ответ: При подключении стандартной функции FIR из библиотеки DSPLIB прекращаются прерывания от передатчика первого последовательного порта
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

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

Отправлено Victor Kalinichenko 08 сентября 2004 г. 09:34
В ответ на: Есть проблема с прерываниями процессора 5509... отправлено mavr 08 сентября 2004 г. 07:30

Я "накололся" на этом же. Целую неделю "парился", пока понял, откуда "ноги растут". А времени было "в обрез". Ко всему прочему, это был мой первый опыт программирования DSP.

Вобщем, DspLib для 5509 написана "криво". Она не отлаживалась на реальных задачах. Например, функция firdec не работает даже в прилагаемом примере, если параметр децимации D установлен равным 2 (а это наиболее частый в практике случай!). А про использование этих функций в режиме, когда могут срабатывать обработчики прерываний действительно приводит к краху.

Теперь к делу. Благодаря моему коллеге, я справился с глюком в функциях fir и fir2. Что касается firinterp, то времени отладить ее у меня не было. Исправить нужно следующее:

Перед всеми обращениями к регистрам ST0 и ST2 необходимо запретить прерывания и после этого опять включить. Кое-что об этом сказано в эррате CPU_75.
Например, в функциях fir и fir2 есть такая строка:

AND #001FFh, mmap(ST0_55) ;clear all ACOVx, TC1, TC2, C

Вместо нее надо написать:

BSET INTM ; errata CPU_75
nop6
AND #001FFh, mmap(ST0_55) ;clear all ACOVx, TC1, TC2, C
BCLR INTM ; errata CPU_75

Здесь nop6 - это 6 подряд инструкций NOP.

Подобным образом нужно "обрамить" и следующие строки:

1) AND #07A00h, mmap(ST2_55) ;clear ARMS, RDM, CDPLC, AR[0-7] LC

2) OR #ST2mask, mmap(ST2_55) ;config circ/linear pointers

3) AND #0FE00h, mmap(ST2_55) ;clear CDPLC and AR[7-0]LC

Ко всему прочему, нет нужды сохранять в стеке рег. ST3_55, т.е. строки

PSH mmap(ST3_55)
и
POP mmap(ST3_55)
можно убрать.

Я исправил эти файлы и все заработало. Вместо всей библиотеки, я подключаю к проекту только нужные исправленные ассемблерные файлы - так мне удобнее.

А вообще глюки есть даже в таких функциях как сложение и вычитание векторов: add и sub.

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru